个人整理的一个git操作命令速查:
1.git安装完成后,在命令行输入:
git config --global user.name "Your Name"
git config --global user.email "email@example.com”
2.创建版本库:
mkdir codedir
cd codedir
pwd
3.初始化版本库
git init
git add readme.txt // git add file2.txt file3.txt 添加多个文件
git comment -m “write logs” // git commit -m "add 3 files” 提交两个文件
4.查看仓库状态
git status
5.查看文件差异
git diff readme.txt
6.查看历史记录
git log
git log --pretty=oneline
6.回退到上一个版本
git reset --hard HEAD^ // 回退到上一个上一个版本
git reset --hard 3628164 // 回退到指定版本 数字串是版本号的前几位
7.查看历史命令
git reflog
8.查看工作区和版本库里面最新版本的区别
git diff HEAD --readme.txt
9.丢弃工作区的修改
git checkout —readme.txt // git checkout -- file命令中的--很重要,没有--,就变成了“切换到另一个分支”的命令
10.把暂存区的修改撤销掉(unstage),重新放回工作区
git reset HEAD readme.txt
git checkout --readme.txt // 丢弃工作区
11.确实要从版本库中删除该文件
git rm test.txt
git commit -m "remove test.txt"
git checkout --test.txt // 把误删的文件恢复到最新版本
12.远程仓库
ssh-keygen -t rsa -C "youremail@example.com” // 创建SSH Key
13.添加远程仓库
git remote add origin git@github.com:michaelliao/learngit.git // 远程库的名字就是origin
14.把本地库的所有内容推送到远程库上
git push -u origin master // first push
git push origin master // after first
15.远程库克隆
git clone git@github.com:michaelliao/gitskills.git
16.创建dev分支,然后切换到dev分支
git checkout -b dev
17.创建dev分支,然后切换到dev分支
git branch dev
git checkout dev
18.查看当前分支(本地)
git branch //查看本地分枝
git branch -r // 查看远程分支
19.把dev分支的工作成果合并到master分支上
git checkout master // 切换回master分支
git merge dev // git merge命令用于合并指定分支到当前分支
20.删除dev分支
git branch -d dev
21.当Git无法自动合并分支时,就必须首先解决冲突。解决冲突后,再提交,合并完成
git log --graph // 看到分支合并图
git log --graph --pretty=oneline --abbrev-commit
22.准备合并dev分支,请注意--no-ff参数,表示禁用Fast forward
git merge --no-ff -m "merge with no-ff” dev
git log --graph --pretty=oneline --abbrev-commit // 合并分支时,加上--no-ff参数就可以用普通模式合并,合并后的历史有分支,能看出来曾经做过合并,而fast forward合并就看不出来曾经做过合并。
23.Git还提供了一个stash功能,可以把当前工作现场“储藏”起来,等以后恢复现场后继续工作:
git stash
git stash list //查看
(1) git stash pop // 恢复的同时把stash内容也删了
(2) git stash apply // 恢复
git stash drop // 删除
24.然后恢复指定的stash,用命令
git stash apply stash@{0}
25.强行删除分支
git branch -D feature-vulcan
26.要查看远程库的信息,
git remote
git remote -v
27.推送分支
git push origin master //推送主分支
git push origin dev //推送开发分支
注意:
master分支是主分支,因此要时刻与远程同步;
dev分支是开发分支,团队所有成员都需要在上面工作,所以也需要与远程同步;
bug分支只用于在本地修复bug,就没必要推到远程了,除非老板要看看你每周到底修复了几个bug;
feature分支是否推到远程,取决于你是否和你的小伙伴合作在上面开发。
28.抓取分支
多人协作的工作模式通常是这样:
- 首先,可以试图用
git push origin branch-name
推送自己的修改;
- 如果推送失败,则因为远程分支比你的本地更新,需要先用
git pull
试图合并;
- 如果合并有冲突,则解决冲突,并在本地提交;
- 没有冲突或者解决掉冲突后,再用
git push origin branch-name推送就能成功!
如果git pull提示“no tracking information”,则说明本地分支和远程分支的链接关系没有创建,用命令
git branch --set-upstream branch-name origin/branch-name。
这就是多人协作的工作模式,一旦熟悉了,就非常简单。
- 查看远程库信息,使用
git remote -v;
- 本地新建的分支如果不推送到远程,对其他人就是不可见的;
- 从本地推送分支,使用
git push origin branch-name,如果推送失败,先用
git pull
抓取远程的新提交;
- 在本地创建和远程分支对应的分支,使用
git checkout -b branch-name origin/branch-nama本地和远程分支的名称最好一致;
- 建立本地分支和远程分支的关联,使用
git branch --set-upstream branch-name origin/branch-name - 从远程抓取分支,使用
git pull如果有冲突,要先处理冲突。
29.打一个新标签
git tag v1.0
30.查看所有标签
git tag
31.指定版本号打标签
git tag v0.9 6224937
32.查看标签信息
git show v0.9
33.创建带有说明的标签,用-a指定标签名,-m指定说明文字
git tag -a v0.1 -m "version 0.1 released” 3628164
34.可以通过-s用私钥签名一个标签
git tag -s v0.2 -m "signed version 0.2 released” fec145a
35.删除标签
git tag -d v0.1
36.推送某个标签到远程
git push origin v1.0
37.一次性推送全部尚未推送到远程的本地标签
git push origin —tags
38.删除远程标签就麻烦一点,先从本地删除,然后,从远程删除
git tag -d v0.9
git push origin :refs/tags/v0.9
39.让Git显示颜色,会让命令输出看起来更醒目
git config --global color.ui true
40.确实想添加该文件,可以用-f强制添加到Git
git add -f App.class
git check-ignore -v App.class // 查看gitignore
忽略某些文件时,需要编写.gitignore;
.gitignore文件本身要放到版本库里,并且可以对.gitignore做版本管理!
41.设置命令别名
git config --global alias.st status
git config --global alias.unstage 'reset HEAD’
git config --global alias.last 'log -1’
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”
42.每个仓库的Git配置文件都放在.git/config文件中
cat .git/config # 别名就在[alias]后面,要删除别名,直接把对应的行删掉即可
43.当前用户的Git配置文件放在用户主目录下的一个隐藏文件.gitconfig中
cat .gitconfig
44.搭建Git服务器
(1) sudo apt-get install git #安装git
(2) sudo adduser git #创建一个git用户,用来运行git服务
(3) sudo git init --bare sample.git #先选定一个目录作为Git仓库,假定是/srv/sample.git,在/srv目录下输入命令
(4) sudo chown -R git:git sample.git #改owner
(5) 禁用shell登录:
出于安全考虑,第二步创建的git用户不允许登录shell,这可以通过编辑/etc/passwd文件完成。找到类似下面的一行:
git:x:1001:1001:,,,:/home/git:/bin/bash
改为:
git:x:1001:1001:,,,:/home/git:/usr/bin/git-shell
这样,git用户可以正常通过ssh使用git,但无法登录shell,因为我们为git用户指定的git-shell每次一登录就自动退出。
(6) 克隆远程仓库
git clone git@server:/srv/sample.git