没长正的技术专栏 勤动手、多思考

常用Git命令

2013-05-02

阅读:

2019-11-18 17:43:00 +0000

  • content

Git

工作中常用 Git 命令

一、安装与部署

  • 命令行:https://git-scm.com/
  • 可视化工具(wins):https://tortoisegit.org/download/

二、快速下载 github 资源

	#(1)Linux环境下:
	wget https://codeload.github.com/itmuch/docker-book/zip/master

	# (2) 先fork,然后同步到码云库,然后下载码云库资源
    git clone url

	# 克隆具体分支/版本
	git clone -b vesion(1.0V) https://gitee.com/yyjcom/YouYueJiaerp.git  erp

	# 克隆重命名
	git clone https://gitee.com/yyjcom/YouYueJiaerp.git  erp

	# 把Git分支看作一棵树的分支,都是在一棵树上操作 !! ---[2018-01-31]

三、Git 命令详解

​ 默认拉取是 master 远程名为 origin

1.查看当前分支 git branch

查看所有分支: git branch -r

2.查看远程名


	# 查看远程名
	git remote

	# 查看git 地址
	git remote -v

    # 重新 设置远程分支地址[2022-02-17]
    git remote set-url origin xxxx

3.创建本地分支

	# <1. 拉取远程分支
    git fetch

	# <2. 在dev分支上开发,就必须创建远程origin的dev分支到本地  (首先必须要本地有远程dev分支信息)
	git checkout -b dev origin/dev

	# <3. 本地分支与远程分支建立关联
	git branch --set-upstream-to=origin/remote_branch  your_branch

	# 等同于
	git branch -u origin/remote_branch your_branch

备注:如果本地没有 dev 分支,则 git checkout -b dev;
--        推动到 dev 分支: git push origin dev;

特殊:假如本地有多个分支时,以 master 分支创建 release 分支:

	git checkout master;

    # 新建release分支
	git branch -b release;

    # 提交到远程
	git branch origin release:release;

4.修改文件信息,提交


    git add *
    git commit -m "修改原因"
    git push origin dev     #------>提交到dev 分支了

	# 修改当前备注信息【2019-11-18】
    git commit --amend
4.1 提交一个文件夹/文件
# 当前目录下文件 git status 可查看 具体文件路径
git add /...  #某一级目录
git add /.../file.txt #具体文件路径

参考

5.删除分支


   git branch -d [branch-name]

   # 有时-d 不起作用,改为 -D
   git branch -D [branch-name]

6.合并

​ 将 dev 合并到 master 分支


	# 1.切换到master 分支
    git checkout master

	# 2.将dev合并到master分支
    git merge dev
    git commit -m "dev ->master合并"
    git push origin master    ------->推送到master 分支

注: github、gitee 同步问题

	#【2019-04-25】具体方法操作如下:

	#1、首先通过 git remote -v 查看您要同步的仓库的远程库列表,如果在列表中没有您码云的远程库地址,您需要新增一个地址

	#git remote add 远程库名 远程库地址
	eg: git remote add gitee git@github.com:xxx/xxx.git

	#如果在 add 的时候出现error: Could not remove config section ‘remote.xxx’.一类的错误,通过把仓库下.git/config 文件里面的 [remote “xxx”] 删掉或者是用别的远程库名即可。
	#2、从GitHub上拉取最新代码到本地

	#git pull 远程库名 分支名
	eg:git pull origin master

	#3、推送本地最新代码到码云上

	#git push 远程库名 分支名
	eg:git push gitee master

	#如果出现有差异的话需要自己手动解决差异

7.清空 git 缓存


	#【2019-06-03】
	git rm -r --cached .
	git add .

	#参考:https://www.cnblogs.com/ldq2016/p/7921480.html

8. 回滚


	git log (查看commit_id)

 	#1.第一种情况:还没有push,只是在本地commit

	git reset --soft|--mixed|--hard <commit_id>
	git push develop develop --force  (本地分支和远程分支都是 develop)
	#这里的<commit_id>就是每次commit的SHA-1,可以在log里查看到
	--mixed  #会保留源码,只是将git commit和index 信息回退到了某个版本.
	--soft   #保留源码,只回退到commit信息到某个版本.不涉及index的回退,如果还需要提交,直接commit即可.
	--hard   #源码也会回退到某个版本,commit和index 都会回退到某个版本.(注意,这种方式是改变本地代码仓库源码)
8.1 针对某次 commit 新增 tag

	# git tag -a V2.0.0 -m "回退到V2.0.0版本"  xxx<SHA1>
	git tag -a V2.0.0 -m "智投大屏自动运行" b0d6a441

	#推送到远端
	git push origin V2.0.0

8.2 针对某次 commit 新增分支
	# 将V2.0.0 指向 b0d6a441
	git checkout -b V2.0.0 b0d6a441

	# 推送到git 仓库
	git push origin V2.0.0

9. stash 用法

# 临时保存变更信息,git reset 分支 ,修改部分代码,然后提交;最后切换到之前变更处;


# 保存当前变更(把变更压栈)
git add *;
git commit -m "fix: xxxx";
git stash push;

# 切换到之前需要调整的分支或者提交记录
git reset xxxx; # 分支记录

# 进行代码修改,然后提交变更
git add *;
git commit -m "fix: bug";
git push;  # 提交变更

# 切换到之前变更
git stash pop; # 弹出到之前变更,会清s空栈内容。

00. 问题小记

00.1 不同提交记录

 	Your branch and 'origin/master' have diverged,
	and have 1 and 1 different commits each, respectively.
    (use "git pull" to merge the remote branch into yours)

	# 1. rebase
	git rebase origin/master
	# 2. pull
	git pull --rebase

	# 3. push
	git push origin master

00.2 返回上一版本
    >git status
    On branch release
    Your branch is ahead of 'origin/release' by 4 commits.
      (use "git push" to publish your local commits)
    nothing to commit, working tree clean

	#返回到上一个版本 git reset --soft version、然后执行问题9操作!
9.3 fatal: refusing to merge unrelated histories
    C:\Users\xusj\Git\company\dgc-portal-manager-system-java>git merge release --allow-unrelated-histories
    Auto-merging README.md
    CONFLICT (add/add): Merge conflict in README.md
    Automatic merge failed; fix conflicts and then commit the result.

参考

github、gitee 同步问题


欢迎拍砖,多多交流,转载请注明出处:[没长正的技术专栏](http://blog.meizhangzheng.com) 如涉及侵权问题,请发送邮件到xsj34567@163.com,如情况属实本人将会尽快删除。


Comments

Content