基本命令
ls :查看目录列表
cd 目录:切换到目录
pwd:显示当前目录
rm 文件名:删除该文件
mkdir 目录名:创建目录
rmdir 目录名:删除目录
git status:查看当前文件的状态
git diff 文件名:查看文件修改内容
git log:显示由近到远的提交日志
git log --pretty=oneline:输出比上边命令简介的信息
cat 文件名:查看文件内容
上传代码
git init:将当前目录变成Git可以管理的仓库
git add . :添加所有文件
git commit -m “备注信息”:为添加的文件写上注释
git remote add origin https://自己的仓库url地址
git pull --rebase origin master(如果README.md 文件下载,同步分支)
git push -u origin master
分支
查看分支 git branch -a
创建分支 git branch name
切换分支 git checkout name
创建并切换 git checkout -b name
合并某分支到当前分支 git merge name
删除分支 git branch -d name
分指合并 git log --graph --pretty=oneline --abbrev-commit
拉取远程代码并使用分支开发
git clone https://github.com/自己的仓库url地址 拉取远程代码(本地master对应远程master)
git remote -v / git branch -al 查看远程/本地分支
git checkout -b dev git push origin dev 创建本地和远程dev分支并推送
git branch --set-upstream branch-name origin/branch-name 建立本地和远程分支链接
gerrity 与git
如果需要code review,直接push
$git push origin master
那么就会有“! [remote rejected] master -> master (prohibited by Gerrit)”的错误信息
而这样push就没有问题,
$git push origin HEAD:refs/for/mybranch
git push origin HEAD:refs/for/xxx(gerrity 需要检查代码所有需要加上引用)
git commit --amend --message=""(修改提交信息)
git commit --amend --author="xxx "
git rebase -i HEAD~2 (合并本地的commit,前两个分支)
git config user.name “newName”
git config user.email “newEmail” (修改用户名)
//git add commit 提交后撤回
未使用git add添加文件缓存时
git checkout – filename
使用git add 时
git reset HEAD filepathname
使用git commit 时
git reset --hard HEAD^ 退回上一次commit的状态
git reset – hard commited ** 退回任一版本
git reset HEAD^ – bar.txt
g
git commit --amend --no-edit
第一个命令把index中的bar.txt回退到commit A的版本,这样下一次commit的时候,bar.txt的版本还是commit A里的。但是查看仓库里也就是work tree里的bar.txt,是修改过后的版本。
放弃本次提交,但保留文件修改记录
git reset --soft HEAD^
git rebase master会复制一份当前分支,并把分支加入到master中,保持一直的时间线
git merge master和直接将当master分支合并当前分支,产生一个新的分支,会有记录
和远程仓库同步当前分支的时候使用 pull --rebase 的方式。
合并分支的使用 feature rebase on master,master merge feature 的方式。
那么多人协作同一个分支也可以做到时间线清晰。最后再通过之前提到的 rebase 方式把 feature 合并到 master 分支上。
当本地的修改未提交到缓存区时(未add时),此时你切换到其他分支,并使用git pull,会强制进行merge,产生一个新分支,这样在git push时和远程分支比对,会产生错误(gerrity),无法提交。
解决方法:
git stash(将修改的本地文件缓存,这样git status 就没有记录)
git pull --rebase 重新拉取远程分支,并合并到远程分支
再把stash释放出来,git commit