1、设置用户
-
查看用户配置信息
git config --list
-
全局配置
git config --global user.name 'aj' git config --global user.email '[email protected]'
-
给单独的项目设置作者
git config --local user.name 'aj' git config --local user.email '[email protected]'
2、设置缩写
-
将$status$ 设置为 $st$
git config --global alias.st status
3、初步使用
-
初始化$git$
git init
-
$git add .$
- git add . 只执行当前目录及之下的所有改变
- git add --all 执行这个项目中的异动
-
提交
git commit -m '描述信息' //暂存区必须有内容 git commit --allow-empty -m '描述信息' //暂存区允许为空 git commit -a -m '描述信息' //不在暂存区但在工作区的文件(tracked file)
-
查看commit
git log git log --oneline -- graph //可以查看到更多的commit :q //退出gitlog,光标在按空格或enter显示更多commit
-
查找某些特定的commit
//查看a和b的commit git log --oneline --author="a \| b" //查看包含有lol的commit git log --oneline --grep="lol" //在commit文件中找到rubby git log -S "rubby" //查找到今天早上9点到12点间的commit git log --oneline --since="9am" --until="12am" //查找2017年1月后早上9点到12点间的commit git log --oneline --since="9am" --until="12am" --after="2017-01" //查看指定文件的commit git log index.html //查看每次commit做了什么 git log index.html -p
-
删除文件
git add delete.txt //手动删除 git rm delete.txt //git自动删除 git rm delete.txt --cached //取消git的控制,但是不删除源文件
-
修改commit记录
-
修改最后一次
git commit --amend -m 'description'
-
reset
git reset e12d3ef^ //表示回退到e12d3ef的前一个,如果有两个^(^^) git reset e12d3ef~5,//表示回退到前5个 git reset master^ git reset HEAD^ //当HEAD和master都指向当前的commit时 git reset e12d3ef //回退到e12d3ef commit
- mixed :文件存放在工作区
- soft : 文件存放在暂存区
- hard :被删除
- git reglog (git log -g)保留reset记录
-
-
追加文件到最新的一次commit中
git commit --amend --no-eidt //表示不添加描述
-
忽略某些文件
-
在.gitignore中添加文件,注意,这个文件只针对在设置了.gitigore之后被管理的文件,之前的文件可以用下面的指令进行处理
git rm --cached //使得之前的文件也能被忽略 git clean -fX //清楚忽略的文件
-
如果使用 git add -f 则无法忽略
-
-
查看代码是在那一次commit中添加的
git blame index.html git bleam -L 5,10 index.html //查看index.html中的5到10行的代码
-
挽回被删除的文件
git checkout index.html git checkout HEAD~2 //表示使用两个版本前的文件覆盖当前工作区的内容,同时更新暂存区的状态
-
HEAD 通常指向当前的分支
4、分支
-
查看分支
git branch
-
新增分支
git branch cat
-
修改分支名称
git branch -m cat dog
-
删除分支/恢复分支
git branch -d dog git branch -D dog //强制删除 git branch 分支名 SHA-1值
-
切换分支
git checkout sheep //原本存在这个分支 git checkout -b sheep //原本不存在这个分支
-
合并分支
git merge 要被合并的分支名 git rebase 要被合并的分支名 //取消合并 git reset HEAD^ --hard //rebase取消合并 git reflog 查找到合并前的commit git reset commit --hard git reset ORIG_HEAD --hard // ORIG_HEAD记录危险操作之前HEAD的位置 //合并发生冲突(文本) //merge,修改冲突文件 git add . git commit -m '' //rebase 修改冲突文件 git add . git rebase --continue //合并发生冲突(图片) git checkout --ours .jpg //使用当前分支的图片 git checkout --theirs .jpg //使用另一个分支的图片
$rebase$ 和 $merge$ 的区别
- $merge$ 合并会产生一个额外的commit (保留原来的commit),指向合并的双方(无master)
- rebase 丢弃原来的commit,根据合并的位置重新计算commit的值
-
查看SHA-1的值
git reflog
-
HEAD,指向当前分支
HEAD^ //缩写@^
-
在过去的commit上另开一个分支
git checkout -b bird commit值
5、修改历史记录
-
使用rebase 修改
git rebase -i sha-1 //整理从sha-1到当前commit的所有提交信息 pick 改为reward
-
合并commit
git rebase -i sha-1 //整理从sha-1到当前commit的所有提交信息 pick 改为 squash
-
增加commit
pick 改为 edit
-
调整commit顺序(修改弹窗内容)
-
删除commit
pick 改为 drop
-
revert 取消之前的commit(新增一个commit表示取消之前的commit)
git revert HEAD --no-edit
6、标签
-
标签和分支的区别
标签不会移动,分支会随着commit的推进而往前移动
-
添加删除标签
git add 标签名 SHA-1值(不写默认当前的commit) //轻量标签 git add 标签名 SHA-1值(不写默认当前的commit)-a -m 信息 //附注标签
7、远端协作
-
设置远端节点
git remote add origin 地址
-
推内容
git push -u(可忽略) origin(远端) master(本地分支名):master(远程分支名) git push -u origin master//第一次简写 git push //-u表示git push默认推送到master分支上
-
拉取内容
// 通常是远端仓库和本地仓库提交的commit不一致时使用,比如提交到仓库后直接在远端修改文件生成一个commit git pull = git fetch + git merge git puhh --rebase //使用rebase合并
-
克隆
git clone -b dev 地址 //指定 git clone 地址 //master
-
删除服务器上的分支
git push origin :cat