git命令
git放弃追踪.env文件:
根目录. gitignore中添加忽略上传文件
配置说明:
以”/“开头表示目录;
以”*“开头表示通配多个字符;
以”?“开头表示通配单个字符;
以”[]“开头表示包含单个字符的匹配列表;
以”!”开头表示不忽略(跟踪)匹配到的文件或目录;
当你向版本库中添加时可能会出现 .gitignore 中的文件并没有生效,原因是.gitignore只能忽略未被追踪的文件,而git有本地缓存。如果增加的 .gitignore 文件原来被追踪过,则需要清除缓存后更新,如下:
git rm .env --cached
git commit -m “更新操作”
git克隆远程仓库指定分支,并在本地重命名
git clone -b <远程指定分支> <远程仓库地址> <本地文件夹名>
如:
git clone -b master_1025 git@gitee.com:dsse/sz-pc.git backend
git pull的时候发生冲突的解决方法之“error: Your local changes to the following files would be overwritten by merge”
方法一:保存本地修改
git stash
git stash pop
git pull
方法二、放弃本地修改,直接覆盖
1git reset --hard
2git pull
git删除分支
我现在在dev20181018分支上,想删除dev20181018分支
1 先切换到别的分支: git checkout dev20180927
2 删除本地分支: git branch -d dev20181018
3 如果删除不了可以强制删除,git branch -D dev20181018
4 有必要的情况下,删除远程分支(慎用):git push origin --delete dev20181018
版本回退
已经commit的但未push的情况
commit后面接着的一连串字符就是你提交的ID(图中箭头所示),,使用Git reset 加上commit ID就可以还原到你所需要的版本去.(commit ID很长,当然只需要输入前面5到6位字符既可)
git log 可以查看提交的日志
git reset --hard HEAD ^ ( ^ 表示回到上一个版本,如果需要回退到上上个版本的话,将HEAD^改成HEAD^^, 以此类推。那如果要回退到前100个版本,这种方法肯定不方便,我们可以使用简便命令操作:git reset --hard HEAD~100 );
可以通过如下命令获取到已删除的版本号: git reflog
git reset efce895 重新指向指定版本,可以是已删除的版本
撤销修改:(工作区,未add的代码区;暂存区,add了但未commit的代码存储区; 本地分支版本库,commit但未push的代码区)
如果你在本地改了一个文件但是还没有add到暂存区,现在你想撤销,这时你可以用 git checkout -- file
命令丢弃工作区的修改,让这个文件回到最近一次git commit或git add时的状态。
但是如果你的修改已经git add到暂存区了,庆幸的是,在commit之前,你发现了这个问题。用git status查看一下,修改只是添加到了暂存区,还没有提交,这时用命令git reset HEAD <file>可以把暂存区的修改撤销掉(unstage),重新放回工作区,然后再用git checkout — file 丢弃工作区的修改:
1、在工作区的代码
git checkout -- a.txt # 丢弃某个文件,或者
git checkout -- . # 丢弃全部
注意:git checkout -- .
丢弃全部,也包括:新增的文件会被删除、删除的文件会恢复回来、修改的文件会回去。这几个前提都说的是,回到暂存区之前的样子。对之前保存在暂存区里的代码不会有任何影响。对commit提交到本地分支的代码就更没影响了。当然,如果你之前压根都没有暂存或commit,那就是回到你上次pull下来的样子了。
2、代码git add到缓存区,并未commit提交
git reset HEAD . 或者
git reset HEAD a.txt
这个命令仅改变暂存区,并不改变工作区,这意味着在无任何其他操作的情况下,工作区中的实际文件同该命令运行之前无任何变化
3、git commit到本地分支、但没有git push到远程
git log # 得到你需要回退一次提交的commit idgit reset --hard <commit_id>
# 回到其中你想要的某个版
或者git reset --hard HEAD^
# 回到最新的一次提交
或者
git reset HEAD^ # 此时代码保留,回到 git add 之前
4、git push把修改提交到远程仓库
1)通过git reset是直接删除指定的commit
git log # 得到你需要回退一次提交的commit id
git reset --hard <commit_id>
git push origin HEAD --force # 强制提交一次,之前错误的提交就从远程仓库删除
2)通过git revert是用一次新的commit来回滚之前的commit
git log # 得到你需要回退一次提交的commit id
git revert <commit_id> # 撤销指定的版本,撤销也会作为一次提交进行保存
3) git revert 和 git reset的区别
– git revert是用一次新的commit来回滚之前的commit,此次提交之前的commit都会被保留;
– git reset是回到某次提交,提交及之前的commit都会被保留,但是此commit id之后的修改都会被删除
reset和revert的区别:
1.pull 则是将远程主机的分支最新内容拉下来后与当前本地分支直接合并 fetch+merge
git pull origin master
2.git提交代码流程
git pull origin sim //将远程主机的sim分支最新内容拉下来后与当前本地分支直接合并 fetch+merge
git add .
git commit -m ‘上传说明’
git push origin mj2 //本地当前分支的代码推送到远程mj分支上
3.本地创建分支mj并切换到新的分支mj2上
git checkout -b mj2
4.查看本地分支
git branch
5.查看远程分支
git branch -r
6.冲突解决 [rejected] mj2 -> mj2 (fetch first) 慎用
git push -f
7.账号密码输入错误,需要回退 Ctrl+Backspace
//多git用户协同开发
1.git add .
2.git commit -m ‘xs’
3.git pull origin sim 到本地mj2分支
4.git pull origin culvert 把张文正的分支代码拉到我的本地合并(该代码也需从sim分支切出)
5.git push origin mj2 将最新代码推到自己的分支
6.打开测试服务器,在测试服当前分支拉取远程mj2分支进行代码更新
git查看远程仓库地址
git remote -v
修改源地址
#[GIT URL]为要修改的源地址
git remote set-url origin [GIT URL]
////////////////// 实例 ////////////////////////
git remote set-url origin git@yyyyyy.git
添加源地址
[NAME]为新的Git库源地址名
git remote add [NAME] [GIT URL]
////////////////// 实例 ////////////////////////
git remote add origin git@xxxxxx.git
删除源地址
git remote remove [NAME]
////////////////// 实例 ////////////////////////
git remote remove origin
git 更新远程分支列表
git fetch // 更新远程仓库的代码为最新的,本地仓库的代码还未被更新
git remote update origin --prune
//可更新远程分支列表,显示出所有远程分支
Git本地分支和远程分支关联
1.如果远程新建了一个分支,本地没有该分支。
可以利用 git checkout –track origin/branch_name ,这时本地会新建一个分支名叫 branch_name ,会自动跟踪远程的同名分支 branch_name。
git checkout --track origin/branch_name
或者 git checkout -b dev origin/dev 本地分支dev和远端dev关联
2.如果本地新建了一个分支 branch_name,但是在远程没有。或者远端也有是要有同名分支
这时候 push 和 pull 指令就无法确定该跟踪谁,一般来说我们都会使其跟踪远程同名分支,所以可以利用 git push –set-upstream origin branch_name ,这样就可以自动在远程创建一个 branch_name 分支,然后本地分支会 track 该分支。后面再对该分支使用 push 和 pull 就自动同步。
git push --set-upstream origin branch_name
简写 git push -u origin branch_name -u为关联意思
2.1,如果本地有分支dev2,远端有分支dev,分支不同名,
git push -u origin dev2:dev 推送即可
如果远端分支dev跟新了,拉取下 git pull origin dev:dev2 或者git pull origin dev
Git 修改本地及远程分支的名称
需要将分支br_rename_old修改为br_rename_new,执行如下步骤:
1、执行命令git checkout br_rename_old
切换到br_rename_old分支,如果已经在这个分支下,可以不执行此步骤
2、执行命令git pull origin br_rename_old
将代码更新到和远程仓库一致
3、执行命令git branch -m br_rename_old br_rename_new
将本地仓库的br_rename_old的名称修改为br_rename_new
4、执行命令git push origin --delete br_rename_old
将远程分支br_rename_old删除
5、执行命令git push --set-upstream origin br_rename_new
将本地分支push到远程仓库