文章目录
Git常用命令
一、使用前
Windows安装Git
- 组件选择可以直接进入下一步
- 环境变量设置可以选择
Use Git Bash only
- 换行符处理选择
Checkout Windows-style, commit Unix-style line endings
查看用户名、密码、邮箱、配置信息
查看用户名 :git config user.name
查看密码: git config user.password
查看邮箱:git config user.email
查看配置信息:git config --list
修改用户名、密码、邮箱
修改用户名:git config --global user.name "Fisrstname Lastname"
修改密码:git config --global user.password "xxxxxx"
修改邮箱:git config --global user.email "your_email@example.com"
以上命令,会在~/.gitconfig
中以如下形式输出设置文件:(可以直接编辑此文件更改)
[user]
name = Firstname Lastname
email = your_email@example.com
设置的姓名和邮箱地址会用在Git提交日志中。在GitHub上公开仓库时,这里的姓名和邮箱地址也会随着提交日志一同被公开,请不要使用不便公开的隐私信息。
提高命令输出可读性
git config --global color.ui auto
二、使用中
初始化仓库git init
- 新建目录
- 进入目录
git init
该目录称为:附属于该仓库的工作树
查看仓库状态git status
只要对Git的工作树或仓库进行操作,该命令的显示结果就会发生变化。
向暂存区添加文件git add
只是用Git仓库的工作树创建了文件,该文件并不会被记入Git仓库的版本管理对象当中。需要用该命令将文件加入暂存区。暂存区是提交之前的一个临时区域。
保存仓库历史记录git commit
提交,即记录工作树中所有文件的当前状态。该命令可以将当前暂存区中的文件实际保存到仓库的历史记录中。
记述一行提交信息git commit -m "xxxxxx"
快速提交git commit -am "xxxxxx"
与先进行git add
,再进行git commit
同样效果。
记述详细提交信息git commit
在编辑器中记述提交信息:
- 第一行:用一行文字简述提交的更改内容
- 第二行:空行
- 第三行以后:记述更改原因和详细内容
编辑完成后,保存并关闭编辑器。
修改提交信息git commit --amend
中止提交
编辑器启动后想中止提交,将提交信息留空并直接关闭编辑器。
压缩历史提交
压缩历史git rebase -i
git rebase -i HEAD~2
,HEAD~2
可以选定当前分支中包含HEAD
(最新提交)在内的两个最新历史记录为对象。在编辑器中打开,将不需要的提交行首pick
改为fixup
,需要保留的行首pick
不变,保存并关闭编辑器。
历史版本回溯与推进
回溯历史版本git reset
git reset --hard HashNumber
让仓库的HEAD、暂存区、当前工作树回溯到指定状态。
推进历史版本git reflog
用于查看当前仓库的操作日志。之后再运行git reset --hard HashNumber
就可以恢复状态。
分支操作
显示分支一览表git branch
查看当前分支相关信息git branch -a
-a
参数可以同时显示本地仓库和远程仓库的分支信息。
创建、切换分支git checkout -b
-b
参数后面是本地仓库中新建分支的名称,新建分支后是获取来源的分支名称。
创建分支git branch BranchName
切换分支git checkout BranchName
切换回上一个分支git checkout -
合并操作
合并分支git merge
将BranchName
分支内容合并到master
分支:
git checkout master
首先切换到master
分支;
git merge --no-ff BranchName
合并分支。
在编辑器中可以不做任何更改,直接保存并关闭编辑器。
冲突解决
在进行合并时候会产生冲突,直接用编辑器打开文件会显示冲突信息。
进行手动处理后,再执行git add
与git commit
命令。
三、使用后
查看提交日志git log
查看以往仓库中提交的日志。(只能查看以当前状态为终点的历史日志)
只显示提交信息的第一行git log --pretty=short
只显示指定目录、文件的日志git log FileName
显示文件的改动git log -p
文件的前后差别就会显示在提交信息之后。
以图表形式查看分支git log --graph
查看更改前后的差别git diff
可以查看工作树、暂存区、最新提交之间的差别。
查看工作树和暂存区的差别git diff
查看工作树和最新提交的差别git diff HEAD
建议养成习惯,先执行git diff HEAD
查看本次提交与上次提交之间差别,确认后再执行git commmit
。(HEAD:指向当前分支中最新一次提交的指针)
推送至远程仓库
远程仓库:与本地仓库相对独立的另一个仓库。
- 在GitHub上创建一个仓库,将其设置为本地仓库的远程仓库。
- 仓库名尽量与本地仓库保持一致
- 创建时不要勾选
Initialize this repository with a README
选项- 直接点击
Create repository
创建仓库
- 添加远程仓库
git remote add origin YourGitHubRepoAddr
Git会自动将
YourGitHubRepoAddr
远程仓库名称设置为origin
- 推送至远程仓库
git push
git push -u origin master
当前分支的内容就被推送给远程仓库origin
的master
分支
-u
参数可以在推送的同时,将origin
仓库的master
分支设置为本地仓库当前分支的upstream
。将来运行git pull
命令从远程仓库获取内容时,本地仓库的这个分支就可以直接从origin
的master
分支获取内容。
git push -u origin YourLocalBranchName
可以将本地仓库非master
分支push
到远程仓库并保持分支名称不变。
从远程仓库获取
获取远程仓库git clone
- 切换到其他目录下,执行
git clone GitHubRepoAddr
执行
git clone
后,默认处于master
分支下,同时系统会自动将origin
设置为该远程仓库的标识符。
git branch -a
查看分支信息
获取远程的分支
git checkout -b RemoteBranchName origin/RemoteBranchName
-b
参数后面是本地仓库中新建分支的名称,新建分支后是获取来源的分支名称。
向本地分支提交更改
- 正常更改操作
git diff
git commmit -am "xxxxxx"
推送本地分支
git push
从远程仓库获取分支,在本地仓库中提交更改,再将分支推送会远程仓库。
获取最新的远程仓库分支git pull
使用git pull origin BranchName
,将本地的分支更新到最新状态。
多名开发者在同一分支中进行作业时,为减少冲突情况的发生,建议更频繁地进行
push
和pull
操作
四、其他资料
- http://try.github.io/
- http://pcottle.github.io/learnGitBranching/
- http://git-scm.com/book/zh/v1
- https://www.jetbrains.com/help/idea/using-git-integration.html