git常用命令

8次阅读

共计 1768 个字符,预计需要花费 5 分钟才能阅读完成。

一、git 常用指令

1、git 显示全部分支

git branch // 显示本地分支
git branch -a // 显示远程分支

2、git 创建分支

git branch 分支名

3、切换分支

git checkout 分支名
git checkout -b 分支名 若分支不存在,则创建它

4、删除分支

git branch -d 分支名
-d 当分支已经合并到主干后删除
- D 无论如何都删除分支

5、合并分支

git merge 分支名

6、撤销前一次 commit

git revert HEAD

7、撤销所有本地修改

git reset –hard

8、撤销所有本地到上一次修改

git reset –hard HEAD^

9、撤销上一次 commit,将 commit 的文件撤回暂存区

git reset –soft HEAD^
要是想撤销到上上次,就是 HEAD^^ , 以此类推。
git revert 是撤销某次操作,此次操作之前的 commit 都会被保留
git reset 是撤销某次提交,但是此次之后的修改都会被退回到暂存区

10、将此次更新文件并入到上次 commit 的记录中,不新添加 commit

git commit -amend

二、git 进阶

1、git tag

可以将某个具体的版本打上一个标签,这样你就不需要记忆复杂的版本号哈希值了,例如你可以使用 ‘git tag revert_version bbaf6fb5060b4875b18ff9ff637ce118256d6f20’ 来标记这个被你还原的版本,那么以后你想查看该版本时,就可以使用 revert_version 标签名,而不是哈希值了

2、git stash

把所有本地修改都放到暂存区

3、git stash pop

把 git stash 放到暂存区的代码拿出来

tips:

  1. 使用 git stash 保存当前的工作现场,那么就可以切换到其他分支进行工作,或者在当前分支上完成其他紧急的工作,比如修订一个 bug 测试提交。
  2. 如果一个使用了一个 git stash,切换到一个分支,且在该分支上的工作未完成也需要保存它的工作现场。再使用 gitstash。那么 stash 队列中就有了两个工作现场。
  3. 可以使用 git stash list。查看 stash 队列。
  4. 如果在一个分支上想要恢复某一个工作现场怎么办:先用 git stashlist 查看 stash 队列。确定要恢复哪个工作现场到当前分支。然后用 git stash pop stash@{num}。num 就是你要恢复的工作现场的编号。
  5. 如果想要清空 stash 队列则使用 git stash clear。
  6. 同时注意使用 git stashpop 命令是恢复 stash 队列中的 stash@{0}即最上层的那个工作现场。而且使用 pop 命令恢复的工作现场,其对应的 stash 在队列中删除。使用 git stash apply stash@{num}方法除了不在 stash 队列删除外其他和 git stashpop 完全一样。

常见问题:

1、提交合并失败
查看源文件

git 迷惑之处在于它不知道是把 hello world 这行放在前面还是把报时功能这段放在前面。
修改冲突

重新提交
git commit -am “xxx”

2、解决 gerrit 冲突
解决远程冲突:
cd demo 以分支为 develop 为例打开 Gerrit 有冲突的那个网址,如 http://192.168.1.33:8080/#/c/16/ 找到 Download 如下命令,执行
git fetch ssh://minggui.li@192.168.1.33:29418/demo refs/changes/16/16/1 && git checkout FETCH_HEADgit checkout -b new_branch_namegit fetch origingit rebase origin/develop
修改冲突文件
git add .git rebase –continuegit push origin new_branch_name:refs/for/developgit checkout developgit branch -D new_branch_name 不会产生新的 changes 记录,将原 changes 记录重新 review 提交即可,这时在原冲突机器上直接 pull 会本地冲突,需要 git reset –hard HEAD^ 否则会出现 cannot do a partial commit during a merge. 最后更新下代码 git pull

正文完
 0

git常用命令

8次阅读

共计 547 个字符,预计需要花费 2 分钟才能阅读完成。

$ git init                                     // 将目录变成 git 可管理的仓库
$ git add .                                    // 将本地仓库中所有变化提交到暂存区
$ git commit -m "str"                          // 上传到仓库
$ git fetch                                    // 查询新远程分支
$ git branch -r/-a                             // 查询远程 / 本地分支
$ git remote add origin http://xxx.git         // 将本地仓库与远程仓库关联
$ git remote -v                                // 查询远程仓库链接
$ git pull --rebase origin master              // 取回远程分支的更新,与本地分支合并
$ git push origin master                       // 提交代码到远程仓库
$ git clone -b dev http://xxx.git              //clone 指定分支的代码
$ git checkout -b dev                          // 新建分支
$ git push --set origin dev                    // 本地分支与远程分支关联
$ git merge dev                                // 合并当前分支 与 dev 分支
$ git status                                   // 查看可更新文件
$ git stash save "str"                         // 储藏
$ git stash list                               // 查看所有储藏
$ git stash drop stash@{num}                   // 删除指定储藏
$ git push origin --delete dev                 // 删除远程分支 dev
$ git branch -d dev                            // 删除本地分支 dev

正文完
 0

git常用命令

8次阅读

共计 211 个字符,预计需要花费 1 分钟才能阅读完成。

1、恢复已经删除的分支

git reflog // 查看所有分支的所有操作记录,找到分支对应的 HEAD 编号
git branch <branch_name> HEAD@{4} // 找回分支

2、创建和删除本地和远程 tag

创建本地 tag:git tag [tag 名]
创建远程分支:git push origin master [tag 名]

删除本地 tag:git tag -d [tag 名]
删除远程 tag:git push orgin :refs/tags/[tag 名]

正文完
 0

Git常用命令

8次阅读

共计 2748 个字符,预计需要花费 7 分钟才能阅读完成。

转载请注明出处,创作不易:https://github.com/ZhengMaster2020/blogs/
关于 Git 是什么东西想必大家应该知道它是个什么东西,所以在这里我就不过多地去唠叨那么多。若有不知请移步 Git 官网,在这里我只想分享一下我自己平时用到的几个常用的 Git 命令。

初始化项目

$ git init : 表示我们在当前的目录下新建了一个 Git 代码库 (它会在当前目录下生成一个.git 的文件夹里面的文件是我们远程仓库的文件)

$ git init [file-name] : 表示我们在当前的目录下新建了一个 Git 代码库 (它会在当前目录下生成一个名为 file-name 的文件夹,名字可以自己随意起,它会在 file-name 文件夹下生成一个.git 文件夹)

$ git clone url:例如在打开 gitbash 输入 git clone git@github.com:ZhengMaster2020/blogs.git 它就会下载链接下的项目到我们的当前目录下,其中 url 链接既可以是 http 协议的链接也可以是 ssh 协议的链接

增加文件和删除文件

$ git add . : 注意 add 后面是英文的 . 表示吧当前目录下的全部文件添加到暂存区(如有不懂这个这个是什么东西的情看 git 官方文档)

$git add [file-name1] [file-name2] … : 中括号表示可选的意思,我们可以添加指定的文件名的文件,添加多少依次就写多少个文件名,那要添加的文件要添加到哪里呢,没错又是这个暂存区,啊哈;

$git add [dir-name] : 添加指定的文件目录到暂存区,里面的子文件目录也会被添加到暂存区中

$ git rm [file-name1] [file-name2] : 表示的是删除指定的文件,这里删除的文件是工作区 (不懂的话,还是补文档) 中的文件

$ git rm –cache [file-name] : 表示的是停止跟踪指定的文件,那么该文件以后如果变动的话可能无法及时更新

$git mv [文件当前名字] [文件更改后的名字] : 表示的是更改文件名

代码提交到本地的仓库

$git commit -m [message]: 将暂存区 (也就是相当本地的一个临时空间,我们用 add 添加的文件一般先放到这里使用 commit 之后再将文件存储在本地仓库里) 了的文件提交的本地的仓库中,完成数据的持久性;

$git commit [file1] [file2]… -m : 将暂存去区指定的的文件提交到仓库区,以便 push 之需,上传到远程的仓库中(-m 中的 m 表是 message 就是每次提交相比之前做了什么改动,是版本升级吗还是功能完善了吗等等)

$git comm -a : 表示提交工作区距离上一次 commit 之后所做的变化,直接提交到仓库中去,就不需要先提交到暂存区在提交到仓库中去

$ git commit -v : 提交时显示所有 diff 的信息(这里它会打开 vi 编辑器来显示信息,需要掌握 Linux 的文本编辑器的相关知识 - 命令模式 - 插入模式 - 底行命令模式)

分支 (branch) 相关命令操作(团多合作挺重要)

$ git branch -a:列出所有分支,不管是本地的还是远程的分支

$ git branch -r:列出所有远程的分支,这里的 -r,表的是 remote 的 r, 表示远程意思

$ git branch:列出所有的本地分支

$ git branch [branch-name]:新建一个名为 branch-name 的分支,但是还是在当前的分支上却没有切换到新建的分支上

$ git merge [branch]:这个命令应该是使用较为频繁的一条,merge 意思是合并的意思,所以啊,它表示的是把指定的分支合并到当前的分支上去

$ git branch -d [branch-name]:不多 BB, 这里就是删除个 B ranch, 删除指定名为 branch-name 的本地分支

$ git push origin –delete [branch-name]:哇,这一条好长喔,成条粉肠甘长,其实呢就是删除远程的名为 branch-name 的分支

查看信息

$ git status:status 意思就是状态的意思,所以它便表示显示状态信息,显示什么信息捏,就是有关变更文件的状态信息嘛

$ git log:显示当前分支的版本历史

$ git log –stat:显示每次 commit 所发生变更的文件,和 commit 历史记录

$ git diff:显示暂存区和工作区的差异,挺有用的一条命令

$ git diff –cache [file]:现实暂存区和上一个 commit 的差异

$ git diff HEAD:现实工作去与当前分支最新 commit 之间的差异

$ git diff –shortstat “@{0 day ago}”:这个有点吊了,就是显示今天你自己写多少行代码,当然是在基于 git 文件下来统计的,都说一天一万行的代码量对应着每月一万元的工资,不知是真的捏还是假的捏

远程仓库同步(这一部分很重要因为与我们的 GitHub 息息相关)

$ git fetch [remote]:表示的是获取 (fetch 就是获取的意思) 远程仓库的所有变动,并下载到本地目录上,这其中的 remote 就是我们远程仓库名,每个人起的名字都不一样,根据自己所填的远程仓库名的去填

$ git remote -v:显示所有远程仓库

$ git remote show [remote]:显示某个远程仓库的信息

$ git remote add [shortname] [url]:新增一个新得远程仓库名为 shortname,url 为远程仓库地址,具体要添加到哪里

$ git pull [remote] [branch]:pull 为拉的意思,表示取回远程仓库的变化,并且和本地的分支合并,(它与 fetch 有何区别呢?请大家自行思考)

$ git push [remote] [branch]:push 意推的意思上传本地仓库指定分支到远程仓库,其中 remote 为远程仓库名称,branch 为本地分支名称

$ git push [remote] –force:force 意思是迫使,强迫,表示强推本地分支到远程仓库,及时和远程仓库有冲突等情况

$ git push [remote] –all:一次性推送所有本地分支到远程仓库,有多少推多少

$ git checkout [file]:恢复暂存区的指定文件到工作区

$ git checkout .:恢复暂存区的所有文件到工作区

$ git reset –hard:重置暂存区与工作区,并于上一次 commit 的变化保持一致

$ git stash:暂时将为提交的的变化移除

好了本次的分享心得就到这里,关于 git 的使用命令还是有很多滴,这些命令涉及到很多方面和功能,在日常生活如若需要用到其他的命令我们可以自行再去网上搜索一下,不必把所有的命令都弄得很熟悉,熟悉常用的就行。还有其他常用的命令我在更新。

正文完
 0

Git常用命令

8次阅读

共计 1926 个字符,预计需要花费 5 分钟才能阅读完成。

git init

  git init 该命令创建一个.git 目录,这个目录包含必要的文件。但是此时还没有跟踪文件,需要通过 git add 添加跟踪文件.

git status

  git status 查看哪些修改的文件已经暂存了,哪些修改的文件没有暂存,哪些文件没有被追踪,如下所示:

$ git status
On branch master
Your branch is up to date with ‘origin/master’.

Changes to be committed:
(use “git reset HEAD <file>…” to unstage)

  modified:   src/main/java/Solution.java

Changes not staged for commit:
(use “git add <file>…” to update what will be committed)
(use “git checkout — <file>…” to discard changes in working >directory)

  modified:   src/main/java/Main.java

Untracked files:
(use “git add <file>…” to include in what will be committed)

  .idea/

git diff

  1. git diff 查看工作区里所有的修改了的文件与暂存区里的文件的差异.
  2. git diff filename 查看工作区中某个修改了的文件与暂存区中的文件的差异

git add

git add <path|filename>

- 添加文件至暂存区
- merge 时出现了冲突,解决冲突之后通过此命令将文件添加到暂存区也表示冲突解决:git add filename
- 添加对文件的跟踪

git commit

  1. git commit 此时 git 会启动一个文本编辑器. 在文本编辑器中输入说明信息且保存.
  2. git commit –amend 对上一次提交的注释信息进行修改.

git pull

  git pull < 远程主机名 > < 远程分支名 >:< 本地分支名 > 拉取远程分支的更新并与当前分支合并

git push

  git push < 远程主机名 > < 本地分支名 >:< 远程分支名 > 将本地的代码推送至远端

git log

  1. git log filename 查看某个文件的提交历史
  2. git log –graph –all 以图形形式显示分支信息

git reflog

  git reflog 当某次执行了 git reset 恢复至之前某个 commit 之后,使用 git log 就不再能够查看到该 commit 之后的提交记录了,此时可以使用 git reflog 查看所有提交记录:
 

git checkout

  1. git checkout 分支名 分支切换
  2. git checkout commit filename 将某个文件恢复至某个 commit
  3. git checkout — filename 用本地仓库的状态替换工作区的状态

git reset

  将当前分支回退至指定 commit,方式为指针向左移动:git reset [–hard|soft|mixed|merge|keep] [<commit> 或 HEAD]
  参数说明:
  –soft 当前分支回退到指定的 commit,并且不会删除任何文件,该 commit 之后修改的文件状态为已添加至缓存区中.

  –mixed 重置索引,但不重置工作树,更改后的文件标记为未提交(add)的状态。默认操作。

  –hard 重置索引和工作树,并且原分支修改的所有文件和中间的提交都被丢弃了。

git revert:将当前的分支回退至某个 commit,方式为创建一个新的 commit 来回退.

git branch

  1. 删除分支:git branch –d 分支名
  2. 创建分支:git branch 分支名
  3. 创建分支并切换分支:git branch –b 分支名

git stash:将当前工作区和暂存区的改动保存在堆栈中。

git stash pop:恢复工作区和暂存区的改动,并且删除堆栈此次记录的信息。

git rm:

  将暂存区的文件删除 git rm –cached 文件名

git merge

分支合并有两种方式:

  1. fast-forward,假设从 master 分支创建一条新的分支 develop,在 develop 分支上进行了一些修改,但是在此期间 master 分支没有进行任何修改,那么在将 develop 分支合并到 master 分支的时候,只是简单的将 master 分支的指针右移。
  2. 创建新的 commit,如果被合入代码的分支和合入分支都进行了修改,则此时需要创建一个新的 commit,此时这个 commit 的祖先有两个,即被合入分支之前的最后一个 commit 和合入分支之前的最后一个 commit。

  git merge 分支名 将分支合并到当前 checkout 的分支

正文完
 0

git常用命令

8次阅读

共计 802 个字符,预计需要花费 3 分钟才能阅读完成。

文件初始化及拉取
// 初始化空文件夹作为 git 项目文件夹
git init

// 从远程仓库 clone 项目到本地仓库
git clone git@git.oschina.net:ifengye/test.git

代码同步及提交
// 从远程仓库同步到本地
git pull origin master

// 把本地文件添加到添加到暂存区
git add .

// 将暂存区的代码提交到本地仓库,说明为‘init’
git commit -m ‘init’

// 将本地仓库的代码推送到远程仓库
git push origin master

仓库分支
查看分支
// 查看本地仓库分支
git branch
// 查看远程仓库分支
git branch -r
// 查看所有仓库分支
git branch -a
// 查看各个分支最后一个提交信息
git branch -v
// 查看哪些分支已经合并入当前分支
git branch –merged
// 可以查看本地分支对应的远程分支
git branch -vv

创建分支
// 创建本地仓库分支
git branch branchName

重命名分支
// 给分支重命名
git branch -m oldName newName

操作分支
// 将分支切换到 master
git checkout master
// 如果分支存在则只切换分支,若不存在则创建并切换到 master 分支
git checkout -b master
// 合并本地某分支到当前分支
git merge <name>
// 将远程分支 test_remote 拉取下来到本地 test 分支
git checkout -b test origin/test_remote
// 将远程分支 test 拉取下来到本地 test 分支
git checkout test

合并分支
// 有缓存区 // 无缓存区
删除分支
// 删除本地 test 分支
git branch -d test
// 删除远程 test 分支
git push origin –delete test
// 删除远程 test 分支
git push origin :test

正文完
 0

git常用命令

8次阅读

共计 1345 个字符,预计需要花费 4 分钟才能阅读完成。

git
// 添加指定文件到暂存区 $ git add [file1] [file2] …
// 添加指定目录到暂存区,包括子目录 $ git add [dir]
// 添加当前目录的所有文件到暂存区 $ git add .
// 删除工作区文件,并且将这次删除放入暂存区 $ git rm [file1] [file2] …
// 停止追踪指定文件,但该文件会保留在工作区 $ git rm –cached [file]
// 改名文件,并且将这个改名放入暂存区 $ git mv [file-original] [file-renamed]
// 提交暂存区到仓库区 $ git commit -m [message]
// 提交暂存区的指定文件到仓库区 $ git commit [file1] [file2] … -m [message]
// 列出所有本地分支 $ git branch
// 列出所有远程分支 $ git branch -r
// 列出所有本地分支和远程分支 $ git branch -a
// 新建一个分支,但依然停留在当前分支 $ git branch [branch-name]
// 新建一个分支,并切换到该分支 $ git checkout -b [branch]$ git push origin [branch] // 第一次要先空 push
// 切换到指定分支,并更新工作区 $ git checkout [branch-name]
// 切换到上一个分支 $ git checkout –
// 合并分支 git merge origin/branch-name
// 删除本地分支 $ git branch -d [branch-name]
// 删除远程分支 $ git branch -r -d origin/test$ git push origin -d test
// 冲突合并 (待测试)$ git mergetool$ beyond compare
// 显示有变更的文件 $ git status
// 显示当前分支的版本历史 $ git log
// 显示暂存区和工作区的代码差异 $ git diff
// 取回远程仓库的变化,并与本地分支合并 $ git pull [remote] [branch]
origin master

// 上传本地指定分支到远程仓库 $ git push [remote] [branch]
origin master

$ git init 在工作目录中初始化新仓库要对现有的某个项目开始用 Git 管理,只需到此项目所在的目录。
// 版本回退 $ git reset –hard 版本号① git pull origin master② git add [dir]git add [file1] [file2] …git add .③git commit -m [str message]④git push origin master
// git 强制覆盖本地代码:$ git fetch –all$ git reset –hard origin/remoteresposity$ git pull
// git 强制覆盖本地命令(单条执行):$ git fetch –all && git reset –hard origin/develop && git pull// git 强制推送本地代码到远程仓库 (待检验)$ git push -u origin develop;
ng
启动 start nginx.exe 重启 nginx.exe -s reload【ng 根目录 nginx-reload.bat】退出 nginx.exe -s quit

正文完
 0

Git 常用命令

8次阅读

共计 974 个字符,预计需要花费 3 分钟才能阅读完成。

配置用户
git config –global user.name “ 姓名 ”git config –global user.email “ 邮箱 ”
克隆仓库
git clone <url>
新建分支
基于 master
git checkout -b new-branch-name -t master 或 git checkout -b new-branch-name origin/master
拉取远程分支,创建切换到本地分支 git checkout -b 本地分支 origin/ 远程分支 (采用此种方法建立的本地分支会和远程分支建立映射关系)
建立两个分支的映射(将当前分支映射到远程的指定分支,注意切换到当前分支)git branch -u origin/ 远程分支
切换分支
git checkout branch-name
查看本地状态
git status
查看本地修改内容
git diff
比较本地文件和远程文件的区别
git diff origin/master 文件路径
在本地提交代码某一文件
git commit -m ‘ 提交信息 ’ filename.txt
在本地提交所有文件
git commit -m ‘ 提交信息 ’ -a
更新分支到 github
git push origin new-branch-name
删除本地已被合并的分支
git fetch -p origin
读取远程仓库修改
git fetch
远程更新后将改动纳入本地分支
git rebase remote-branch
删除远程分支
git branch -r -d origin/branch-name 或 git push origin :branch-name
拉取最新代码:
git pull <remote> <branch> 或 git pull –rebase <remote> <branch>
强制更新单个文件:
1) git fetch2) git checkout origin/master — path/to/file
放弃本地修改,强制更新
1) git fetch –all2)git reset –hard origin/master
fetch 使用:
git fetch origin master:temp (采用此种方法建立的本地分支不会和远程分支建立映射关系)
比较本地的仓库和远程参考的区别
$ git diff temp
合并 temp 分支到 master 分支
$ git merge temp
如果不想要 temp 分支了,可以删除此分支
$ git branch -d temp

正文完
 0

git 常用命令

8次阅读

共计 3950 个字符,预计需要花费 10 分钟才能阅读完成。

分布式
git 是分布式版本控制系统,这么一来,任何一处协同工作用的服务器发生故障,事后都可以用任何一个镜像出来的本地仓库恢复。因为每一次的克隆操作,实际上都是一次对代码仓库的完整备份。
直接记录快照,而非差异比较
每次你提交更新,或在 Git 中保存项目状态时,它主要对当时的全部文件制作一个快照并保存这个快照的索引。为了高效,如果文件没有修改,Git 不再重新存储该文件,而是只保留一个链接指向之前存储的文件。
Git 中所有数据在存储前都计算校验和,然后以校验和来引用。
三种状态

配置 git config

$ git config –global user.name “John Doe”
$ git config –global user.email johndoe@example.com
$ git config –global core.editor emacs // 配置文本编辑器,可选
$ git config –list // 查看
当你想针对特定项目使用不同的用户名称与邮件地址时,可以在那个项目目录下运行没有 –global 选项的命令来配置。
常用命令
$ git init
$ git add 文件名 |.
$ git commit 这种方式会启动文本编辑器以便输入本次提交的说明
$ git commit -m ‘message’
$ git commit -a -m ‘added new benchmarks’ 跳过使用暂存区域的方式
$ git clone url [name]
$ git status
查看差异
$ git diff 比较的是工作目录中当前文件和暂存区域快照之间的差异,也就是修改之后还没有暂存起来的变化内容。
$ git diff –cached 查看已经暂存起来的变化
删除文件
$ git rm [filename] 从已跟踪文件清单中移除(确切地说,是从暂存区域移除)并从工作目录中删除指定的文件
$ git rm -f [filename] 删除之前修改过并且已经放到暂存区域的文件
$ git rm –cached [filename] 把文件从 Git 仓库中删除(亦即从暂存区域移除),但保留在当前工作目录中
$ git mv file_from file_to 重命名
查看提交历史
$ git log –pretty=format 以指定格式输出
format 如下:
选项 说明
%H 提交对象(commit)的完整哈希字串

%h 提交对象的简短哈希字串

%T 树对象(tree)的完整哈希字串

%t 树对象的简短哈希字串

%P 父对象(parent)的完整哈希字串

%p 父对象的简短哈希字串

%an 作者(author)的名字

%ae 作者的电子邮件地址

%ad 作者修订日期(可以用 –date= 选项定制格式)

%ar 作者修订日期,按多久以前的方式显示

%cn 提交者(committer)的名字

%ce 提交者的电子邮件地址

%cd 提交日期

%cr 提交日期,按多久以前的方式显示

%s 提交说明
其他选项如下:
-p 用来显示每次提交的内容差异

–stat 每次提交的简略的统计信息

–graph 显示 ASCII 图形表示的分支合并历史。

–pretty=xxx 使用其他格式显示历史提交信息。可用的选项包括 oneline,short,full,fuller 和 format(后跟指定格式)。
撤销操作
$ git commit –amend 有时候我们提交完了才发现漏掉了几个文件没有添加,这个命令会将暂存区中的文件提交。如果自上次提交以来你还未做任何修改(例如,在上次提交后马上执行了此命令),那么快照会保持不变,而你所修改的只是提交信息
$ git reset HEAD <file> 取消暂存
$ git checkout — [file] 撤消对文件的修改
远程仓库
$ git remote 查看远程仓库
$ git remote -v 查看远程仓库
$ git remote show [remote-name] 查看远程仓库
$ git remote add <shortname> <url> 添加远程仓库
$ git remote rename 旧名 新名 重命名远程仓库
$ git remote rm [remote-name] 删除远程仓库
$ git fetch [remote-name] 将数据拉取到你的本地仓库 – 它并不会自动合并或修改你当前的工作
$ git pull 抓取数据并自动尝试合并到当前所在的分支。
$ git push [remote-name] [branch-name] 推送到远程仓库, 只有当你有所克隆服务器的写入权限,并且之前没有人推送过时,这条命令才能生效
打标签
$ git tag 列出已有的标签
$ git tag -a 标签 -m 备注 打附注标签
$ git show 标签 查看标签的信息
$ git push origin 标签 将标签推送到远程仓库服务器上
$ git push origin –tags 将所有的标签推送到远程仓库
$ git tag -d 标签 删除本地标签
$ git push <remote>:refs/tags/<tagname> 删除远程标签
分支
Git 保存的不是文件的变化或者差异,而是一系列不同时刻的文件快照
假设现在有一个工作目录,里面包含了三个将要被暂存和提交的文件, 暂存操作 (git add) 会为每一个文件计算校验和, 然后会把当前版本的文件快照保存到 Git 仓库中(Git 使用 blob 对象来保存它们),最终将校验和加入到暂存区域等待提交。
当使用 git commit 进行提交操作时,Git 会先计算每一个子目录(本例中只有项目根目录)的校验和,然后在 Git 仓库中这些校验和保存为树对象。随后,Git 便会创建一个提交对象,它除了包含上面提到的那些信息外,还包含指向这个树对象(项目根目录)的指针。如此一来,Git 就可以在需要的时候重现此次保存的快照。
现在,Git 仓库中有五个对象:三个 blob 对象(保存着文件快照)、一个树对象(记录着目录结构和 blob 对象索引)以及一个提交对象(包含着指向前述树对象的指针和所有提交信息)。做些修改后再次提交,那么这次产生的提交对象会包含一个指向上次提交对象(父对象)的指针。Git 的分支,其实本质上仅仅是指向提交对象的可变指针它有一个名为 HEAD 的特殊指针, 指向当前所在的本地分支
$ git branch [branch-name] 这会在当前所在的提交对象上创建一个指针(分支)。
$ git branch -d [branch-name] 删除指定分支
$ git branch -D [branch-name] 强制删除
$ git branch -v 查看每一个分支的最后一次提交
$ git checkout [branch-name] 切换分支
$ git checkout -b [branch-name] 创建并切换分支
$ git log –oneline –decorate –graph –all 输出提交历史、各个分支以及项目的分支分叉情况
$ git merge [branch-name] 合并指定分支到当前分支, 当你试图合并两个分支时,如果顺着一个分支走下去能够到达另一个分支,那么 Git 在合并两者的时候,只会简单的将指针向前推进(指针右移),因为这种情况下的合并操作没有需要解决的分歧——这就叫做“快进(fast-forward)”。如果有分叉,出现这种情况的时候,Git 会使用两个分支的末端所指的快照(C4 和 C5)以及这两个分支的工作祖先(C2), 做一个新的快照并且自动创建一个新的提交指向它。这个被称作一次合并提交,它的特别之处在于他有不止一个父提交。
看一个例子: 首先创建并切换到 testing 分支在 testing 分支上进行修改, 并提交接着切换回 master 分支, 并修改提交合并的例子: 合并后如下
出现冲突
合并它们的时候产生合并冲突, Git 会暂停下来,等待你去解决合并产生的冲突。你可以在合并冲突后的任意时刻使用 git status 命令来查看那些因包含合并冲突而处于未合并(unmerged)状态的文件, 在你解决了所有文件里的冲突之后,对每个文件使用 git add 命令来将其标记为冲突已解决。一旦暂存这些原本有冲突的文件,Git 就会将它们标记为冲突已解决。这时你可以输入 git commit 来完成合并提交
远程分支
远程引用是对远程仓库的引用(指针),包括分支、标签等等
$ git ls-remote [remote] 某个远程引用的完整列表
$ git remote show [remote] 获得远程分支的更多信息
$ git checkout -b [branch] [remote-ranch] 创建并跟踪分支
$ git branch -u|–set-upstream-to 远程分支 将已有分支跟踪到指定的远程分支
$ git branch -vv 查看已有的所有跟踪分支
$ git push [remote] –delete branch 删除远程分支
如果有人对远程仓库进行了修改,你也对你本地仓库进行了修改, 此时进行 fetch
分支 - 变基
在 Git 中整合来自不同分支的修改主要有两种方法:merge 以及 rebase
merge
它会把两个分支的最新快照(C3 和 C4)以及二者最近的共同祖先(C2)进行三方合并,合并的结果是生成一个新的快照(并提交)。合并之后
rebase
你可以使用 rebase 命令将提交到某一分支上的所有修改都移至另一分支上,就好像“重新播放”一样。
$ git rebase [branch] 将当前分支的修改提取,并移动到 [branch] 上
$ git rebase 被提取的分支 目标分支 将被提取分支的修改移动到目标分支
$ git merge [branch] 一般在变基后,需要进行一次快进合并
$ git pull –rebase 将当前分支的修改提取,并合并到目标分支, 等同于执行 git fetch origin/branch 然后再执行 git rebase origin/branch
提取修改:合并后:不要对在你的仓库外有副本的分支执行变基。如你已经将提交推送至某个仓库,而其他人也已经从该仓库拉取提交并进行了后续工作

正文完
 0

git 常用命令

8次阅读

共计 4564 个字符,预计需要花费 12 分钟才能阅读完成。

github 创建仓库到本地使用
前期准备
// 注册 github 账号
// 地址:https://github.com/

// 配置密匙
// 地址:https://jingyan.baidu.com/article/414eccf6a330926b431f0ac6.html

// 创建仓库 git-test
// git/https 切换到 git 模式 (避免每次重复密匙验证)

// 确保已经安装 git bash,并打开

创建本地仓库
// 在本地创建文件夹
mkdir git-test
// 复制代码,如以下示例,粘贴到 git bash 运行
echo “# git-test” >> README.md
git init
git add README.md
git commit -m “first commit”
git remote add origin git@github.com:webjimmylau/git-test.git
git push -u origin master

创建分支
// 最好统一先在 github 上创建分支
// 然后才在本地 git pull 分支

git 命令
文件夹
clear // 清空代码
pwd // 显示当前目录
mkdir fileName // 创建文件夹
cd fileName // 进入文件夹
git init // 把这个目录变成 git 可以管理的仓库

文件
echo xxx >> text.txt // 创建文件并更改或直接更改文件内容
rm text.txt // 删除文件
cat text.txt // 查看文件内容
git diff text.txt // 查看文件修改的内容
git diff HEAD — text.txt // 查看工作区和版本库里面最新版本的区别
git reset HEAD . // 撤销件到暂存区
git checkout — text.txt // 撤销修改文件内容 或 撤销删除文件

分支
git branch // 查看分支 * 代表当前分支
git branch dev // 创建分支
git branch -d dev // 删除分支
git branch -D dev // 强行删除分支
git checkout dev // 切换分支
git checkout -b dev // 创建并切换分支
git checkout -b dev origin/dev // 创建并拉取远程分支 dev 并切换分支
git merge dev // 在当前分支上合并 dev 内容
git merge –no-ff -m ‘xxx’ dev // 合并分支,禁用‘Fast forward’模式,删除后还能保留分支信息

版本查看
git reflog // 查看全部版本(包括回滚后看不到的版本、误操作等)
git log // 详细查看分支提交历史(当前版本的祖先版本)
git log –pretty=oneline // 简单查看分支提交历史(去除作者和日期)
git log –pretty=oneline –abbrev-commit // 查看精简分支提交历史(缩小版本号长度)
git log –graph // 查看分支删除信息

版本回滚
git reset –hard HEAD^ // 回滚到上一个版本
git reset –hard HEAD~100 // 回滚到上 100 个版本
git reset –hard scd51f // 回滚到某版本

拉取提交
git clone git-test(url) // 克隆 git-test 项目
git remote add origin git-test(url) // 关联一个远程库
git pull origin master // 拉取成功 然后手动处理冲突
git branch –set-upstream master // 解决分支冲突
git push -u origin master // 把本地 master 分支和远程 master 分支关联起来
// 并把本地 master 分支的最新修改推送到 github 上
git push origin master // 把本地 master 分支的最新修改推送到 github 上
git push origin :dev // 在远程分支上删除 dev 分支
git remote // 查看远程库的信息 如:origin
git remote -v // 查看远程库的详细信息 如:origin

隐藏现场
git stash // 将当前的工作现场隐藏起来
git stash list // 查看隐藏的工作现场
git stash apply // 恢复工作现场
git stash drop // 删除隐藏的一条工作现场记录
git stash pop // 恢复并删除

提交到本地
git status // 查看是否还有文件未提交
git add text.txt // 添加文件到暂存区
git commit -m ‘xxx’ // 把暂存区的文件提交到仓库

git 命令使用方法
1、创建 / 修改 / 提交
cd D: // 进入 D 盘
mkdir www // 创建文件夹 www
cd www // 进入文件夹 www
mkdir git-test // 创建文件夹 git-test
cd git-test // 进入文件夹 git-test
pwd // 显示当前目录
git init // 把这个目录变成 git 可以管理的仓库
echo 111 >> readme.txt // 创建 readme.txt 文件 并添加内容 111
git add readme.txt // 添加 readme.txt 文件到暂存区里面去
git commit -m “add file” // 把暂存区的文件提交到仓库
git status // 查看是否还有文件未提交
echo 222 >> readme.txt // 创建 readme.txt 文件并更改或直接更改 readme.txt 文件内容
git status // 查看是否还有文件未提交
git diff readme.txt // 查看 readme.txt 修改了什么内容
git add readme.txt // 添加 readme.txt 文件到暂存区里面去
git commit -m “change file” // 把暂存区里面的内容提交到仓库

2、版本回退
echo 333 >> readme.txt
git add readme.txt
git commit -m “change file”
git log // 查看版本历史记录
git log –pretty=oneline // 查看精简版本历史记录
git reset –hard HEAD^ // 退回到上一个版本 ^ 上一个 ^^ 上两个 ~100 上 100 个
cat readme.txt // 查看 readme.txt 内容
git log // 查看版本历史记录,被覆盖的最新版本 333 已经看不到,按 q 退出查询
git reflog // 可以看到 333 内容的版本信息和对应的版本号
git reset –hard xxxxxx // 恢复到 333 内容的版本
cat readme.txt // 查看 readme.txt 内容

3、理解工作区与暂存区的区别
echo 444 >> readme.txt // 修改文件
echo test >> test.txt // 新增文件
git add readme.txt // 添加文件到暂存区
git add test.txt // 添加文件到暂存区
git commit -m “add files” // 把暂存区的文件提交到仓库

4、撤销修改
echo 555 >> readme.txt // 修改文件
cat readme.txt // 查看文件
git checkout — readme.txt // 把文件在工作区做的修改全部撤销
git 666 >> readme.txt // 修改文件
git add readme.txt // 添加文件到暂存区
echo 777 >> readme.txt // 修改文件
cat readme.txt // 查看文件
git checkout — readme.txt // 把文件暂存区的修改保留,把工作区为修改全部撤销
cat readme.txt // 666 还有,777 不见了

5、删除文件
echo b >> b.txt // 新建文件
git add b.txt // 添加文件到暂存区
git commit -m “change file” // 提交暂存区的文件到仓库
rm b.txt // 删除文件
git status // 查看文件状态
git checkout — b.txt // 撤销删除文件

6、远程仓库
// 如何添加远程库
git remote add origin git-test(url)
git push -u origin master // 把本地 master 分支和远程 master 分支关联起来
// 并把本地 master 分支的最新修改推送到 github 上
git push origin master // 把本地 master 分支的最新修改推送到 github 上

// 如何从远程克隆
git clone git-test(url)

7、创建与合并分支
git branch // 查看分支 * 代表当前分支
git branch dev // 创建分支
git checkout dev // 切换分支
git checkout -b dev // 创建并切换分支
cat readme.txt
echo 777 >> readme.txt
cat readme.txt
git add readme.txt
git commit -m ‘xxx’
git checkout master
cat readme.txt // 只有之前的内容 666
git merge dev // 在当前分支上合并 dev 内容
cat readme.txt // master 上多了内容 777
git branch -d dev // 删除 dev 分支

// 如何解决冲突
git merge fenzhi1 // 删除冲突,再提交

// 分支管理策略
git merge –no-ff -m ‘text’ dev // 合并分支,禁用‘Fast forward’模式,删除后还能保留分支信息
git branch -d dev
git log –graph –pretty=oneline –abbrev-commit // 查询被删除的分支信息

8、bug 分支
git status // 有看到新增和修改的文件
git stash // 将当前的工作现场隐藏起来
git status // 隐藏之后,查看状态,是干净的
git checkout -b issue-404 // 创建和切换分支到 issue-404
git add readme.txt // 把文件添加到暂存区
git commit -m ‘fix some bug’ // 把暂存区的文件提交到仓库
git checkout master // 切换分支到 master
git merge –no-ff -m ‘merge issue-404’ issue-404 // 合并 issue-404 分支
cat readme.txt // 当前 master 分支可以看到 issue-404 分支的内容,完全一致
git branch -d issue-404 // 在 master 分支上删除 issue-404 临时分支
git checkout dev // 切换到 dev 分支
git status // 查看状态,还是干净的
git stash list // 查看隐藏的工作现场
git stash apply // 恢复工作现场
git stash drop // 删除隐藏的一条工作现场记录
git stash pop // 恢复并删除

9、多人协作
git clone git-test(url) // 克隆 git-test 项目
git pull origin master // 拉取 master 分支
git push origin master // 推送 master 分支
git pull origin dev // 拉取失败
git branch –set-upstream dev // 解决分支冲突
git pull origin dev // 拉取成功 然后手动处理冲突
git push origin dev // 推送 dev 分支

正文完
 0

git常用命令

8次阅读

共计 682 个字符,预计需要花费 2 分钟才能阅读完成。

git 常用命令

1. branch 分支
文档 api 记录:

分支的新建与合并
常用 git 命令

常用命令:
// 新建一个 dev 分支,可以使用 git branch 命令
git branch dev
// 要切换到其他分支,可以执行 git checkout 命令
git checkout dev
// 新建并切换 [branch-name]
git checkout -b iss53
// 提交工作区自上次 commit 之后的变化,直接到仓库区
git commit -a -m [message]
// 提交时显示所有 diff 信息
git commit -v
// 推送到远程仓库
git push [remote-name] [branch-name]
// 将 master 分支推送到 origin 服务器时
git push origin master
// 将 dev 分支合并到 master
git checkout master
git merge dev
// 删除分支 hotfix
git branch -d hotfix
// git 删除远程分支
git push origin –delete <BranchName>
// 要看看哪些文件在合并时发生冲突,可以用 git status 查阅
git status
// git 打 tag
git tag -a v1.0.0 -m “1.0.0 版本 ”
git push origin v1.0.0
// 在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)。
// 因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突

正文完
 0

git常用命令

8次阅读

共计 682 个字符,预计需要花费 2 分钟才能阅读完成。

git 常用命令

1. branch 分支
文档 api 记录:

分支的新建与合并
常用 git 命令

常用命令:
// 新建一个 dev 分支,可以使用 git branch 命令
git branch dev
// 要切换到其他分支,可以执行 git checkout 命令
git checkout dev
// 新建并切换 [branch-name]
git checkout -b iss53
// 提交工作区自上次 commit 之后的变化,直接到仓库区
git commit -a -m [message]
// 提交时显示所有 diff 信息
git commit -v
// 推送到远程仓库
git push [remote-name] [branch-name]
// 将 master 分支推送到 origin 服务器时
git push origin master
// 将 dev 分支合并到 master
git checkout master
git merge dev
// 删除分支 hotfix
git branch -d hotfix
// git 删除远程分支
git push origin –delete <BranchName>
// 要看看哪些文件在合并时发生冲突,可以用 git status 查阅
git status
// git 打 tag
git tag -a v1.0.0 -m “1.0.0 版本 ”
git push origin v1.0.0
// 在解决了所有文件里的所有冲突后,运行 git add 将把它们标记为已解决状态(译注:实际上就是来一次快照保存到暂存区域。)。
// 因为一旦暂存,就表示冲突已经解决。如果你想用一个有图形界面的工具来解决这些问题,不妨运行 git mergetool,它会调用一个可视化的合并工具并引导你解决所有冲突

正文完
 0