宽容他人,放过自己。

git的使用

Posted on By anchoriteFili

显示隐藏文件

$ defaults write com.apple.finder AppleShowAllFiles Yes && killall Finder

不显示隐藏文件

$ defaults write com.apple.finder AppleShowAllFiles No && killall Finder

设置隐藏单个文件

$ chflags hidden /Volumes/OS_X_EI_Capitan_file/OS_X_EI_Capitan.png

设置不隐藏文件

$ chflags nohidden /Volumes/OS_X_EI_Capitan_file/OS_X_EI_Capitan.png
1> 创建代码仓库

$ git init

2> 配置用户名和邮箱

$ git config user.name hehe

$ git config user.email hehe@163.com

以上两个命令会将用户信息保存在当前代码仓库中

只有配置了用户和邮箱后,git才能识别出操作的人员信息,通过钩子(hooks)程序可以设置一些动作例如单元测试发现问题后,自动给相关人员发送电子邮件

3> 如果要一次性配置完成可以使用以下命令

$ git config --global user.name hehe

$ git config --global user.email hehe@163.com

以上两个命令会将用户信息保存在用户目录下得 .gitconfig文件中

4> 查看当前所有配置

$ git config -l

5> git help //可以显示所有命令
名称 说明
add Add file contents to the index
bisect Find by binary search the change that introduced a bug
branch List, create, or delete branches
checkout Checkout a branch or paths to the working tree
clone Clone a repository into a new directory
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
fetch Download objects and refs from another repository
grep Print lines matching a pattern
init Create an empty Git repository or reinitialize an existing one
log Show commit logs
merge Join two or more development histories together
mv Move or rename a file, a directory, or a symlink
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects
rebase Forward-port local commits to the updated upstream head
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
show Show various types of objects
status Show the working tree status
status Show the working tree status
tag Create, list, delete or verify a tag object signed with GPG

git help clone //显示这项命令的文档信息

文档命令: 按q退出文档 按 / 加要搜索的名字,可以实现关键字搜索 例如:/clone 空格可以实现向下翻页 Ctrl+B实现向上翻页

git 常用命令


查看当前代码库状态

git status

将文件添加到暂存区

git add main.c

将文件从暂存区添加到本地仓库

git commit main.c -m"呵呵呵呵呵"

注意: 如果没有加-m”“将会进入view文件 i 代表输入内容 输入完毕之后按esc 然后:wq

注意: git中的add和SVN中的add不同,git中的add每次修改都要添加,SVN只需要add一次

工作区 - add -> 暂存区 - commit -> 仓库

git 其他指令

注意:git默认没有简写指令 不建议使用简写指令

其别名: $ git config alias.st status $ git cofig alias.ci “commit -m”

提示: git中的版本号是一个由SHA1生成的40位的哈希值 SVN是一个递增的值

$ git reflog 查看分支引用记录

171733086737271.png

$ git reset --hard HEAD  回到当前版本,放弃所有没有提交的修改

$ git reset --hard HEAD^  上一个版本

$ git reset --hard HEAD~(3) 回到之前第3个修订版本

配置带颜色的log别名
$ git config --global alias.lg "log --color --graph --pretty=format:'%Cred%h%Creset -%C(yellow)%d%Creset %s %Cgreen(%cr) %C(bold blue)<%an>%Creset' --abbrev-commit"

直接输入 git lg

171706203766681.png

回到指定版本号的版本

git reset --hard 版本号

171734306106938.png

查看修改了什么内容

$ git diff 文件名

171737357511044.png

直接回到上一次提交的版本 $ git chackout main.c

git 远程仓库

1. 新建git远程仓库

git init --bare

注意: 远程仓库仅仅是用于管理代码,不参与开发

cd /Users/hehe/Desktop/git测试/公司远程仓库

git init --bare

2. 项目经理初始化项目

2.1 先克隆一份空仓库到本地  

git clone /Users/hehe/Desktop/git测试/公司远程仓库

2.2 .gitignore 可以指定那些文件不纳入版本库的管理

命令行中进入与.git同级的目录

$ cd /Users/hehe/Desktop/git测试/经理/公司远程仓库

.gitignore文件

echo -e "# Xcode
> #
> # gitignore contributors: remember to update Global/Xcode.gitignore, Objective-C.gitignore & Swift.gitignore
> 
> ## Build generated
> build/
> DerivedData
> 
> ## Various settings
> *.pbxuser
> !default.pbxuser
-bash: !default.pbxuser: event not found
> *.mode1v3
> !default.mode1v3
-bash: !default.mode1v3: event not found
> *.mode2v3
> !default.mode2v3
-bash: !default.mode2v3: event not found
> *.perspectivev3
> !default.perspectivev3
-bash: !default.perspectivev3: event not found
> xcuserdata
> 
> ## Other
> *.xccheckout
> *.moved-aside
> *.xcuserstate
> *.xcscmblueprint
> 
> ## Obj-C/Swift specific
> *.hmap
> *.ipa
> 
> # CocoaPods
> #
> # We recommend against adding the Pods directory to your .gitignore. However
> # you should judge for yourself, the pros and cons are mentioned at:
> # http://guides.cocoapods.org/using/using-cocoapods.html#should-i-check-the-pods-directory-into-source-control
> #
> #Pods/
> 
> # Carthage
> #
> # Add this line if you want to avoid checking in source code from Carthage dependencies.
> # Carthage/Checkouts
> 
> Carthage/Build"> .gitignore

进入与.git 隐藏文件同级文件,直接拷贝粘贴上面的命令行,配置好.gitignore文件

git status   发现.gitignore为红色

git add .gitignore

it commit .gitignore -m"配置忽略文件"

以上,经理文件配置完

2.3 新建项目

source control - > commit 将代码提交到本地 加对号可直接push

source control - > push 提交到远程服务器

git 默认就会创建一个分支,这个分支叫做origin/master,相当于SVN中的trunk

专业人员只需要在git仓库的hooks文件夹中写一些指令,就可以完成自动测试(压力测试/自动测试/集成测试/冒烟测试)

和SVN一样,如果服务器仓库的代码被修改了,我们再提交代码也会报错

fetch first == out of date

新人服务器搭建

1> 正常创建一个新人服务器 2> 将代码提交到新人服务器中

Source Control - > 仓库master - > Configure - > Remotes - > 点击+ add Remote创建服务器连接点

181917316107054.png

  • 创建服务器连接点成功

  • 向新服务器上传代码,在commit中直接选择路径

181921235014611.png

  • 上传成功

  • 新人克隆代码修改代码上传

  • 经理新建一个代码文件,用来检查新人的代码情况

  • Source Control ->History查看其修改代码情况

  • 查看修改详情

181932000169551.png

git 分支管理

git 和 SVN不同,不是拷贝一份进行备份,而是通过直接在主线上打标签做标记

查看当前标签

$ git tag

在本地代码库给项目打上标签

$ git tag -a v1.0 -m'Version 1.0'

将标签推送到远程代码库中

$ git push origin v1.0

当出现bug时,根据标签回到以前版本进行修改 使用tag,就能够将项目快速切换到某一个中间状态,例如:产品开发线上的某个版本.

迁出v1.0标签

$ git checkout v1.0

创建分支,用来处理迁出版本bug

$ git checkout -b 1.0bug.fix //要用.fix

bug修复好后再打个标签

$ git tag -a v1.1 -m'Version1.1'

推到服务器

$ git push origin v1.1

直接在修改后的文件中将分支合并到主线上

182040138458665.png

push推送到主线,完成合并

查看远程分支

$ git branch -r

删除远程分支

$ git branch -r -d origin/bugfix1.0

获取指定commit的变化

此方法支持一次拉去多个commit,需要看好再拉,想好怎么处理可能出现的冲突

$ git cherry-pick 17d5059 uerg9va 9vu38av vb9u3gv