git 常用 使用命令

1、用远程代码库中的版本完全覆盖本地工作版本

  git reset --hard
  git pull


2、保留本地代码库中没有push的改动,更新代码,再还原代码

   git stash
   git pull
   git stash pop


3、撤销commit但未push的改动

 git log                     #找到要撤销的id
 git reset --hard id         #撤销改动,本地代码恢复到id版本
 git stash pop               #撤销commit,但不对本地代码修改撤销


4、撤销缓冲区改动

  git reset


5、提交

 git add -A     #提交所有变化
 git add -u     #提交modified和deleted文件,不包括new
 git add .      #提交new和modified文件,不包括deleted文件


6、分支管理

 git branch                 #列出本地所有分支
 git branch </name/>        #创建分支name
 git branch -d </name/>     #删除分支name
 git checkout </name/>      #切换分支
 git checkout -b </name/>   #创建并切换分支


7、远程库与本地库合并

git remote                            #查看远程库信息
 git push origin dev                   #推送指定分支dev
 git checkout -b dev origin/dev        #创建远程origin的dev分支到本地
 git merge  </name/>                   #合并指定分支name到当前分支
 git branch --set-upstream dev  origin/dev  #建立本地dev分支与远程分支dev的关联
 (在pyCharm中也可以直接从右下角的Git-》RemoteBranches选择对应的远程分支,点左键check out as
 就可以自动创建本地关联的对应分支)


8、删除“.pyc”文件

 find /tmp -name "*.pyc"
 xargs rm -rf


9、撤销已commit但未git push的命令

 git log                 #找到想要撤销的id
 git reset -hard id      #将代码恢复到前一commit_id 对应的版本,同时完成commit的撤销
 git reset id            #完成commit的撤销,但不对本地代码修改进行撤销,可以通过commit再次提交本地代码的修改
1.放弃本地修改
使用本地版本覆盖:
使用版本库覆盖:
当执行 "git checkout HEAD ." 或者 "git checkout HEAD <file>" 命令时,会用 HEAD 指向的 master 分支中的全部或者部分文件替换暂存区以及工作区中的文件。这个命令也是极具危险性的,因为不但会清除工作区中未提交的改动,也会清除暂存区中未提交的改动。

使用暂存区覆盖:
当执行 "git checkout ." 或者 "git checkout -- <file>" 命令时,会用暂存区全部或指定的文件替换工作区的文件。这个操作很危险,会清除工作区中未添加到暂存区的改动。

使用远程版本覆盖
git fetch --all  //只是下载代码到本地,不进行合并操作
git reset --hard origin/dev  //把HEAD指向下载的dev分支版本
git pull  //再次更新本地

2.忽略某文件以及某文件夹
a、从未提交过的文件可以用.gitignore 也就是添加之后从来没有提交(commit)过的文件,可以使用.gitignore忽略该文件,该文件只能作用于未跟踪的文件(Untracked Files),也就是那些从来没有被 git 记录过的文件, 比如,忽略log/下的日志文件,可以在.gitignore中写 log/*
创建.gitignore
修改文件,添加忽略正则
.idea //忽略.idea文件夹及文件夹下文件
  *.iml //忽略以.iml结尾的文件
# 忽略*.o和*.a文件
 *.[oa]
# 忽略*.b和*.B文件,my.b除外
*.[bB]
!my.b
**/foo: 忽略/foo, a/foo, a/b/foo等
# 忽略dbg文件和dbg目录
dbg
# 只忽略dbg目录,不忽略dbg文件
dbg/
# 只忽略dbg文件,不忽略dbg目录
dbg
!dbg/
# 只忽略当前目录下的dbg文件和目录,子目录的dbg不在忽略范围内
/dbg
提交本地版本库,推送到远程项目,方便协作,项目管理
添加忽略之后,已经提交到版本库中的文件是无法忽略的。只能clone到本地,删除后,再忽略。
删除track的文件 (已经commit的文件)
git rm -r --cached 文件(从缓存中删除文件)
在.gitignore文件中添加忽略规则
(1) 在.gitignore文件中添加ignore条目, 如: some/path/some-file.ext
(2) 提交.gitignore文件: git commit -am "添加ignore规则"

b、已经推送(push)过的文件,想从git远程库中删除,并在以后的提交中忽略,但是却还想在本地保留这个文件, 执行命令 git rm --cached Xml/config.xml, 后面的 Xml/config.xml 是要从远程库中删除的文件的路径,支持通配符*, 比如,不小心提交到git上的一些log日志文件,想从远程库删除,可以用这个命令
c、已经推送(push)过的文件,想在以后的提交时忽略此文件,即使本地已经修改过,而且不删除git远程库中相应文件 执行命令 git update-index --assume-unchanged Xml/config.xml 后面的 Xml/config.xml 是要忽略的文件的路径。如果要忽略一个目录,打开 git bash,cd到目标目录下,执行: git update-index --assume-unchanged $(git ls-files | tr '\n' ' ') 比如有一个配置文件记录数据库的链接信息,每个人的链接信息肯定不一样,但是又要提供一个标准的模板,用来告知如何填写链接信息,那么就需要在git远程库上有一个标准配置文件,然后每个人根据自己的具体情况,修改一份链接信息自用,而且不会将该配置文件提交到库

3.版本回退
git reset 是指将当前head的内容重置,不会留log信息。
git reset HEAD filename  从暂存区中移除文件
git reset --hard HEAD~3  会将最新的3次提交全部重置,就像没有提交过一样。
git reset --hard [commit哈希值](38679ed709fd0a3767b79b93d0fba5bb8dd235f8) 回退到 38679ed709fd0a3767b79b93d0fba5bb8dd235f8 版本
根据--soft --mixed --hard,会对working tree和index和HEAD进行重置:
git reset --mixed:此为默认方式,不带任何参数的git reset,它回退到某个版本,只保留源码,回退commit和index信息
git reset --soft:回退到某个版本,只回退了commit的信息,不会恢复到index file一级。如果还要提交,直接commit即可
git reset --hard:彻底回退到某个版本,本地的源码也会变为上一个版本的内容
命令 git log --pretty=oneline --abbrev-commit 找到历史提交的commit id

4.解决冲突
情景一:在当前分支上,直接修改冲突代码--->add--->commit。
情景二:在本地当前分支上,修改冲突代码--->add--->commit--->push

5.强制用本地覆盖远程
git push origin master --force

6.本地项目添加到远程
1.在远程新建仓库
2.在本地项目运行命令
git init
git remote add origin [email protected]:用户名/项目名.git
git add 项目名
git commit -am "注释" 提交项目文件
git push -u origin master 推送到远程仓库

如果有冲突则先解决冲突

git fetch + git merge 与 git pull 的区别是前者下载与合并分成了两步,后者一次做完

当执行 "git reset HEAD" 命令时,暂存区的目录树会被重写,被 master 分支指向的目录树所替换,但是工作区不受影响。删除已经add但是还没有提交的文件
当执行 "git rm --cached <file>" 命令时,会直接从暂存区删除文件,工作区则不做出改变。

7.设置保存用户名密码
git config --global user.name "[email protected]"
git config --global user.email "[email protected]"
git config --global credential.helper store

8.将指定文件恢复到某个版本
场景: 对于某个Git控制下的文件进行了修改,但是改的不满意,想退回到改之前的版本。假定该文件为 src/main/main.c
解决方法:
第一步: 在命令行中输入 git log src/main/main.c 得到该文件的commit 历史。
第二步: 复制需要回退版本的hash,在此假设我们回退到 95d4f787ff2949 ,则复制该序列即可
第三步:checkout 对应版本。格式为 git checkout <hash> <filename>, 在此即为命令行中输入 git checkout 95d4f787ff2949 src/main/main.c
第四步: commit checkout下来的版本。 如: git commit -m "revert to previous version"

9.查看远程地址命令
git remote -v

10.标签
命令 git tag <tagname> 用于新建一个标签,默认为HEAD,也可以指定一个commit id;
命令 git tag -a <tagname> -m "this is memeo" 可以指定标签信息;
命令 git tag 可以查看所有标签。
命令 git tag -d <tagname> 删除标签
命令 git push origin :refs/tags/<tagname> 可以删除一个远程标签。
命令git push origin --tags 一次性推送全部尚未推送到远程的本地标签
命令git push origin <tagname> 推送某个标签到远程




 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章