实践中的Git常用指令分析
从工作开始,一直都在使用为知笔记(作为程序员需要知道的内容很多---不需要很深入理解,一段时不使用的东西可能就会忘记)。但本周一同步不同PC端时,了解到为知会在2017/1/1开始收费!
既然收费了,咱就不用了;但同步功能真得很好用。看看自己平日里做的笔记,恰好给自己一个写作的机会(那就把它们整理一下,发表到博客园上吧)。
“好记性不如烂笔头嘛!”是James一直坚信的理念。希望你也如此!(下述图片为转载)
之前的博客《Git--常用场景解析》,说道了一下安装和基本常识;本篇说说更加深入一点的内容,包括:
1. 如何获取Git平台的所有可用指令,以及对特定Command的帮助文档;
2. Git的add指令分析;
3. Git的commit指令分析;
4. Git的rm指令分析;
5. Git的mv指令分析;
6. Git的show指令分析;
7. Git的diff指令分析;
8. Git的push指令分析;
9. Git的init指令分析;
10. Git的clone指令分析。
主题1:Git平台的帮助文档
如果想知道Git到底有多大,那就应该知道Git平台到底有多少可用指令。
james@james-PC MINGW64 /d/GitDemo/remoteGit (BARE:master)
$ git usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>]
These are common Git commands used in various situations:
start a working area (see also: git help tutorial)
clone Clone a repository into a new directory
init Create an empty Git repository or reinitialize an existing one
work on the current change (see also: git help everyday)
add Add file contents to the index
mv Move or rename a file, a directory, or a symlink
reset Reset current HEAD to the specified state
rm Remove files from the working tree and from the index
examine the history and state (see also: git help revisions)
bisect Use binary search to find the commit that introduced a bug
grep Print lines matching a pattern
log Show commit logs
show Show various types of objects
status Show the working tree status
grow, mark and tweak your common history
branch List, create, or delete branches
checkout Switch branches or restore working tree files
commit Record changes to the repository
diff Show changes between commits, commit and working tree, etc
merge Join two or more development histories together
rebase Reapply commits on top of another base tip
tag Create, list, delete or verify a tag object signed with GPG
collaborate (see also: git help workflows)
fetch Download objects and refs from another repository
pull Fetch from and integrate with another repository or a local branch
push Update remote refs along with associated objects 'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
上述git指令给出的结果,对Git平台上涉及到的指令进行了分类,并给出了指令格式:—command –args。想要知道Git平台的所有指令,还需要执行以下指令:
james@james-PC MINGW64 /d/GitDemo/remoteGit (BARE:master)
$ git help --all usage: git [--version] [--help] [-C <path>] [-c name=value]
[--exec-path[=<path>]] [--html-path] [--man-path] [--info-path]
[-p | --paginate | --no-pager] [--no-replace-objects] [--bare]
[--git-dir=<path>] [--work-tree=<path>] [--namespace=<name>]
<command> [<args>] available git commands in 'C:\Program Files\Git\mingw64/libexec/git-core' add fsck-objects rebase--helper
add--interactive gc receive-pack
am get-tar-commit-id reflog
annotate grep relink
apply gui remote
archimport gui--askpass remote-ext
archive gui--askyesno remote-fd
askpass gui.tcl remote-ftp
bisect hash-object remote-ftps
bisect--helper help remote-http
blame http-backend remote-https
branch http-fetch repack
bundle http-push replace
cat-file imap-send request-pull
check-attr index-pack rerere
check-ignore init reset
check-mailmap init-db rev-list
check-ref-format instaweb rev-parse
checkout interpret-trailers revert
checkout-index log rm
cherry ls-files send-email
cherry-pick ls-remote send-pack
citool ls-tree sh-i18n--envsubst
clean mailinfo shortlog
clone mailsplit show
column merge show-branch
commit merge-base show-index
commit-tree merge-file show-ref
config merge-index stage
count-objects merge-octopus stash
credential merge-one-file status
credential-manager merge-ours stripspace
credential-store merge-recursive submodule
credential-wincred merge-resolve submodule--helper
cvsexportcommit merge-subtree subtree
cvsimport merge-tree svn
cvsserver mergetool symbolic-ref
daemon mktag tag
describe mktree unpack-file
diff mv unpack-objects
diff-files name-rev update-index
diff-index notes update-ref
diff-tree p4 update-server-info
difftool pack-objects upload-archive
difftool--helper pack-redundant upload-pack
fast-export pack-refs var
fast-import patch-id verify-commit
fetch prune verify-pack
fetch-pack prune-packed verify-tag
filter-branch pull web--browse
fmt-merge-msg push whatchanged
for-each-ref quiltimport worktree
format-patch read-tree write-tree
fsck rebase git commands available from elsewhere on your $PATH
flow
'git help -a' and 'git help -g' list available subcommands and some
concept guides. See 'git help <command>' or 'git help <concept>'
to read about a specific subcommand or concept.
通过上述结果,可想而知:Git是如此庞大。
若想要知道某个具体command的含义,只需要执行:git help <command>。
主题2:git add指令
Git显式地将本地代码分为三个层级,或者本地目录下的文件分为三个状态。对于最后一种说法,Git分为的三个状态分别是:工作区,暂存区和版本区(最终修改提交的位置)。
使用:git add <file> 或者 git add .,将文件加入暂存区中。
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git add .
warning: LF will be replaced by CRLF in index.html.
The file will have its original line endings in your working directory.
对于新建的一个文件,Git会提示文件状态为:Untracked files,并提示对应可用的指令:git add <file>...
此时执行:git status可查看文件状态的改变:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
使用add指令后,文件状态发生了改变:Changes to be committed(可被commit的状态)
根据提示,使用下述指令可以将文件从暂存区移除:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git rm --cached index.html
rm 'index.html'
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
使用rm指令,文件状态回到了Untracked状态(状态做了翻转)。
主题3:git commit指令
提交新文件new file(已存在于暂存区中)到代码仓库,可以执行以下指令:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Initial commit
Changes to be committed:
(use "git rm --cached <file>..." to unstage)
new file: index.html
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git commit -m "Initial contents of public_html"
[master (root-commit) dc785f6] Initial contents of public_html
1 file changed, 1 insertion(+)
create mode 100644 index.html
执行了:git commit ...指令后就是将暂存区中的代码提交到了代码仓库中。
git log...可以查看历次提交commit内容:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git log
commit dc785f69abdcb1b2897d5a76bf38562186029e39
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 10:14:26 2016 +0800
Initial contents of public_html
再次修改该文件(前提是:仓库中已经有该文件),代码仓库已知晓该文件:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ cat index.html
<html>
<body>
My websit is alive!
</body>
</html>
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
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: index.html
no changes added to commit (use "git add" and/or "git commit -a")
git status状态指出,文件已修改(但对于Commit而言,本次修改没有被暂存:Changes not staged for commit)
再次提交时,直接给出已修改文件的文件名,否则达不到提交的效果:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git commit index.html
[master 4b6d0b2] Convert to HTML
1 file changed, 4 insertions(+)
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git log
commit 4b6d0b2a8b3268f9515eec522c4725980fe2feed
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 10:30:14 2016 +0800
Convert to HTML
commit dc785f69abdcb1b2897d5a76bf38562186029e39
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 10:14:26 2016 +0800
Initial contents of public_html
在上述执行了:git commit index.html时,会跳转到vim界面并编辑commit的log message。本次提交直接将工作目录的修改提交到了代码仓库,中间跳过了Staged状态。
git commit -m "descr..." 默认将 index 中的所有改动(如果workspace中的改动提交给了index,即执行了 git add 操作,但忽略那些没有提交的改动)提交到local respository中。
git commit -a -m "modify: all file" 执行结果:提交了对所有结果的改动,直接影响到了所有文件(是对所有已存在于index区域的文件改动有效,对未存在于index的文件无效,不管有没有执行 git add <modify>...)。
git commit -m "descr..." <file>... 将index中的指定文件的改动提交到local respository中(此时在workspace中的该文件必须是提交给index,若是未提交给index的文件,将会找不到)。
git commit --amend 对最新提交进行修改(对最近一次提交进行修改),重写commit信息,而不会产生另外的新提交;git commit -m "commit lg" --amend:重写最近一次提交说明,不进入vim界面。
对于git commit指令不推荐使用参数 -a,否则,将会丢失对提交内容进行控制的能力。
主题4:git rm指令
Git中提到的rm指令,实际是:remove,移除或去除。
删除仓库中本身存在的文件,使用一次提交即可实现:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git rm poem.html
rm 'poem.html'
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: poem.html
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git commit -m "Remove poem.html"
[master 4481246] Remove poem.html
1 file changed, 1 deletion(-)
delete mode 100644 poem.html
使用:git rm ...指令实现删除文件操作。git rm ..实际上执行了两个步骤:1.删除文件;2.将删除文件这一改动添加到暂存区中。
遍历目录内容:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ ls -al
total 9
drwxr-xr-x 1 james 197121 0 十二 3 20:51 ./
drwxr-xr-x 1 james 197121 0 十二 3 09:41 ../
drwxr-xr-x 1 james 197121 0 十二 3 20:51 .git/
-rw-r--r-- 1 james 197121 49 十二 3 10:26 index.html
主题5:git mv指令
重命名Git仓库中的文件有两种手法,前者为后者指令的分解操作。
git-mv - Move or rename a file, a directory, or a symlink.
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ mv test.txt testOtherName.txt
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ ls
index.html testOtherName.txt
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Changes not staged for commit:
(use "git add/rm <file>..." to update what will be committed)
(use "git checkout -- <file>..." to discard changes in working directory)
deleted: test.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
testOtherName.txt
no changes added to commit (use "git add" and/or "git commit -a")
步骤1:mv指令将源文件重命名为后者;Git当前的状态显示:已将源文件删除,另增加了未存在于仓库的新文件。
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git rm test.txt
rm 'test.txt'
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
deleted: test.txt
Untracked files:
(use "git add <file>..." to include in what will be committed)
testOtherName.txt
步骤2:执行git rm ...或者git add ...将删除的文件修改添加到暂存区中。Git当前状态显示:源文件已删除,其改动已存在于暂存区中;但新生成了一个新文件,且没有没有存放到暂存区。
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git add .
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: test.txt -> testOtherName.txt
步骤3:将未添加到仓库的新文件加入暂存区中.
上述Changes to be committed显示:实际是在执行文件重名。
使用Git上的一个复合指令如下:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git mv testOtherName.txt test.txt
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Changes to be committed:
(use "git reset HEAD <file>..." to unstage)
renamed: testOtherName.txt -> test.txt
下一步,将上述改动提交到代码仓库即可:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git commit -m "testOtherName to test"
[master 8bac1e8] testOtherName to test
1 file changed, 0 insertions(+), 0 deletions(-)
rename testOtherName.txt => test.txt (100%)
主题6:git show指令
很多时候想查看某次commit的内容,或者是文件中的修改内容。
使用:git show ...指令即可;同时需要使用特定提交的commitID作为其参数。
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git show 4b6d0b
commit 4b6d0b2a8b3268f9515eec522c4725980fe2feed
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 10:30:14 2016 +0800
Convert to HTML
diff --git a/index.html b/index.html
index 9aefa39..a698d54 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,5 @@
+<html>
+<body>
My websit is alive!
+</body>
+</html>
\ No newline at end of file
其中参数指明的是某个指定的commit:“commit 4b6d0b2a8b3268f9515eec522c4725980fe2feed”。
另外一种方式:git show-branch ...以简洁的方式查看当前分支的提交描述。
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git show-branch --more=10
[master] Convert to HTML
[master^] Initial contents of public_html
参数:--more=10指明的是最近的10次提交内容。
主题7:git diff指令
比较两次commitID或者commit的不同:
执行:git diff ...
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git diff master master^
diff --git a/index.html b/index.html
index a698d54..9aefa39 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1 @@
-<html>
-<body>
My websit is alive!
-</body>
-</html>
\ No newline at end of file
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git diff master^ master
diff --git a/index.html b/index.html
index 9aefa39..a698d54 100644
--- a/index.html
+++ b/index.html
@@ -1 +1,5 @@
+<html>
+<body>
My websit is alive!
+</body>
+</html>
\ No newline at end of file
其中:master代表的是最近的一次commit,master^代表的上一次提交。可以看出:参数位置的不同,也就是基准的不同,得到的比较结果也不同。
另外一种方式,同样指明commitID号:
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git diff 4b6d0b2a dc785f69a
diff --git a/index.html b/index.html
index a698d54..9aefa39 100644
--- a/index.html
+++ b/index.html
@@ -1,5 +1 @@
-<html>
-<body>
My websit is alive!
-</body>
-</html>
\ No newline at end of file
主题8:git push指令
一般情况下,一个代码仓库的分支可能是如下情况:

比如此时James所在的分支为:develop,想要将本地分支合并到远程分支,可以使用下述指令:git push origin HEAD:refs/for/develop。其中origin:远程主机名;HEAD:指代本地分支名;develop:远程分支名;
另一种情况可能是这样的:

在推送代码的时候使用的是如下指令:
git push yunos HEAD:refs/for/yunos/k88c/xxx/v6-k,其中yunos:远程主机名;HEAD:指代本地的当前分支;/yunos/k88c/xxx/v6-k:想要推送的远程分支名。
用于将本地分支的更新推送到远程主机:git push <远程主机名> <本地分支名>:<远程分支名>。如果省略远程分支名,则表示将本地分支推送与之存在”追踪关系”的远程分支(通常两者同名),如果该远程分支不存在,则会被新建(一般需要写远程分支名)。如果当前分支与远程分支之间存在追踪关系,则本地分支和远程分支都可以省略。git push origin表示将当前分支推送到名为"origin主机"的对应分支。
如果省略本地分支名,则表示删除指定的远程分支,相当于推送一个空的本地分支到远程分支。git push origin :master,相当于是:git push origin --delete master表明删除origin主机的master分支。
主题9:git init指令
将代码托管到Git仓库中,首先要做的是初始化(新建)仓库。
对于Git来说,不管是初始化一个空的目录,还是装有很多Files的目录,初始化Git仓库都是一样的手法。
gaoyating@gaoyating-PC MINGW64 /d/GitDemo
$ cd public_html/
gaoyating@gaoyating-PC MINGW64 /d/GitDemo/public_html
$ ls
james@james-PC MINGW64 /d/GitDemo/public_html
$ echo 'My websit is alive!' > index.html
james@james-PC MINGW64 /d/GitDemo/public_html
$ ls
index.html
james@james-PC MINGW64 /d/GitDemo/public_html
$ cat index.html
My websit is alive!
james@james-PC MINGW64 /d/GitDemo/public_html
$ git init
Initialized empty Git repository in D:/GitDemo/public_html/.git/
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ ls
index.html
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ ll
total 1
-rw-r--r-- 1 james 197121 20 十二 3 09:41 index.html
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ git status
On branch master
Initial commit
Untracked files:
(use "git add <file>..." to include in what will be committed)
index.html
nothing added to commit but untracked files present (use "git add" to track)
执行:git init指令可以初始化Git仓库;隐式地,Git会创建./.git(本目录中)目录。
james@james-PC MINGW64 /d/GitDemo/public_html (master)
$ ls -al
total 5
drwxr-xr-x 1 james 197121 0 十二 3 09:41 ./
drwxr-xr-x 1 james 197121 0 十二 3 09:41 ../
drwxr-xr-x 1 james 197121 0 十二 3 09:42 .git/
-rw-r--r-- 1 james 197121 20 十二 3 09:41 index.html
所有关于代码托管的信息,都会存放在.git目录中。
由此上述执行指令,就为public_index目录创建了一个Git仓库;public_index目录中的所有代码即可托管于本地所在的Git仓库中。
主题10:git clone指令
仓库拷贝使用:git clone指令实现。
james@james-PC MINGW64 /d/GitDemo
$ git clone public_html/ clone_public
Cloning into 'clone_public'...
done.
james@james-PC MINGW64 /d/GitDemo
$ ls
clone_public/ localGit/ public_html/ remoteGit/
james@james-PC MINGW64 /d/GitDemo
$ ls -al
total 24
drwxr-xr-x 1 james 197121 0 十二 3 21:14 ./
drwxr-xr-x 1 james 197121 0 十二 3 09:40 ../
drwxr-xr-x 1 james 197121 0 十二 3 21:14 clone_public/
drwxr-xr-x 1 james 197121 0 十一 20 08:37 localGit/
drwxr-xr-x 1 james 197121 0 十二 3 21:11 public_html/
drwxr-xr-x 1 james 197121 0 十一 20 08:41 remoteGit/
上述指令执行后,clone_pulic代码仓库即是public_html仓库的副本。
查看clone_public仓库的状态:
james@james-PC MINGW64 /d/GitDemo
$ cd clone_public/
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
nothing to commit, working tree clean
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git log
commit 8bac1e803752ec07728a8a702043cfdae9370eac
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 21:12:14 2016 +0800
testOtherName to test
commit 908c2e3a0bcc23486887700214f451b00afeb07b
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 21:02:13 2016 +0800
move test to testOtherName
commit a5e536ba19d80e5ab3d4b0ee0afc255bc8d23ba3
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 20:59:49 2016 +0800
test git mv
commit 4481246b361b9b4e34da137af84b3cd09114af2c
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 20:51:45 2016 +0800
Remove poem.html
commit 9cf7a35c1dc820f997c2536e2f3341fc9cb887ff
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 20:51:06 2016 +0800
test remove file
commit 4b6d0b2a8b3268f9515eec522c4725980fe2feed
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 10:30:14 2016 +0800
Convert to HTML
commit dc785f69abdcb1b2897d5a76bf38562186029e39
Author: ZHANGEfeng-james <zfengwust3054@163.com>
Date: Sat Dec 3 10:14:26 2016 +0800
Initial contents of public_html --author=Gao Yating <gaoya@163.com>
发现仓库的历次提交均和public_html仓库相同。
再次查看clone_public仓库和public_html仓库之间的关系,猜想是否有指向关系?
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git branch -a
* master
remotes/origin/HEAD -> origin/master
remotes/origin/master
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git branch -vv
* master 8bac1e8 [origin/master] testOtherName to test
指令结果显示:clone_public仓库确实指向了远程的origin/master分支,但并没有指明远程仓库的路径。
做一次commit和push实验,查看远程仓库:
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git status
On branch master
Your branch is up-to-date with 'origin/master'.
Untracked files:
(use "git add <file>..." to include in what will be committed)
clone.txt
nothing added to commit but untracked files present (use "git add" to track)
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git add .
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git commit -m "clone test"
[master 5b830e5] clone test
1 file changed, 1 insertion(+)
create mode 100644 clone.txt
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git status
On branch master
Your branch is ahead of 'origin/master' by 1 commit.
(use "git push" to publish your local commits)
nothing to commit, working tree clean
结果提示,clone_public仓库的commit超前于远程仓库,需要使用git push指令进行同步。
james@james-PC MINGW64 /d/GitDemo/clone_public (master)
$ git push origin HEAD:master
Counting objects: 3, done.
Delta compression using up to 8 threads.
Compressing objects: 100% (2/2), done.
Writing objects: 100% (3/3), 329 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: error: refusing to update checked out branch: refs/heads/master
remote: error: By default, updating the current branch in a non-bare repository
remote: error: is denied, because it will make the index and work tree inconsistent
remote: error: with what you pushed, and will require 'git reset --hard' to match
remote: error: the work tree to HEAD.
remote: error:
remote: error: You can set 'receive.denyCurrentBranch' configuration variable to
remote: error: 'ignore' or 'warn' in the remote repository to allow pushing into
remote: error: its current branch; however, this is not recommended unless you
remote: error: arranged to update its work tree to match what you pushed in some
remote: error: other way.
remote: error:
remote: error: To squelch this message and still keep the default behaviour, set
remote: error: 'receive.denyCurrentBranch' configuration variable to 'refuse'.
To D:/GitDemo/public_html/
! [remote rejected] HEAD -> master (branch is currently checked out)
error: failed to push some refs to 'D:/GitDemo/public_html/'
执行push操作后的结果出现错误,但是引出了远程仓库地址:D:/GitDemo/public_html;出错的原因在于:远程仓库初始化使用的是git init指令,而不是git --bare init。
实践中的Git常用指令分析的更多相关文章
- iOS开发——源代码管理——git(分布式版本控制和集中式版本控制对比,git和SVN对比,git常用指令,搭建GitHub远程仓库,搭建oschina远程仓库 )
一.git简介 什么是git? git是一款开源的分布式版本控制工具 在世界上所有的分布式版本控制工具中,git是最快.最简单.最流行的 git的起源 作者是Linux之父:Linus Bened ...
- git常用指令整理
git常用指令一览表 GIT指令 说明 git add . 将全部文件的内容加到Git索引以便执行commit. 这个指令不会检查文件夹中是否有文件被删除. 要注意的是,只有执行" git ...
- Git常用指令整理(Git Cheat Sheet)
[Toc] 1. 创建 复制一个已创建的仓库:git clone ssh://user@domain.com/repo.git 创建一个新的本地仓库:git init 2. 本地修改 显示工作路径下已 ...
- git常用指令
<a>github的提交方式 git status (1)git add .--------------------存储到本地 git add -u ...
- Git常用指令和GitHub操作总结
Git版本管理工具(CVS) 首先粘上两个Git的基础链接~ 阮一峰:http://www.ruanyifeng.com/blog/2015/12/git-cheat-sheet.html 廖雪峰:h ...
- xcode svn commit is not under version control 和 git常用指令
使用Xcode提交一个第三方库时,由于包含资源文件,总是提交不了,提示报错:XXX commit is not under version control (1) 网上查了下,得知 xcode对于sv ...
- (转)unityshaderLab中fixed function常用指令
ShaderLab中常用的fixedFunction. SubShader{ Tags{"Queue"="Transparent"} //渲染完不透明物体,再渲 ...
- git常用指令汇总
命令行指令 Git 全局设置 git config --global user.name "cqu2003" git config --global user.email &quo ...
- git 常用 指令累积
1.查询指定文件的修改所有修改日志git log --pretty=oneline 文件名 1. git log filename 可以看到fileName相关的commit记录2. git log ...
随机推荐
- 高并发分布式系统中生成全局唯一Id汇总
数据在分片时,典型的是分库分表,就有一个全局ID生成的问题.单纯的生成全局ID并不是什么难题,但是生成的ID通常要满足分片的一些要求: 1 不能有单点故障. 2 以时间为序,或者ID里包含时间 ...
- Python基础篇【第8篇】: Socket编程 (一)
Python Socket 官方关于 Socket 的函数请看 http://docs.python.org/library/socket.html 一.socket介绍 在网络编程中的一个基本组件就 ...
- linux 查找目录或文件
查找目录:find /(查找范围) -name '查找关键字' -type d查找文件:find /(查找范围) -name 查找关键字 ·find path -option [ -print ] [ ...
- lua中的协程
lua中的协程和线程类似: 1. 协程拥有自己的独立的栈,局部变量,和指令: 2. 所有协程都可以共享全局变量: 3. 协程不能像线程那样并行执行,协程之间需要相互协调执行,同一个时刻只能运行一个协程 ...
- 有了第一台自己开发的pro,开心,明天分享最近整理逆向分析ios的一些东西
最近都在忙于ios深入研究,研究别人的代码,别人的app.然后顺藤摸瓜的找到了关键:逆向,动态特性等. 相关工具:reveal, cycript等. 特别感谢前人的分享,为了打开学习ios的另外一扇大 ...
- 【EF学习笔记08】----------加载关联表的数据 显式加载
显式加载 讲解之前,先来看一下我们的数据库结构:班级表 学生表 加载从表集合类型 //显示加载 Console.WriteLine("=========查询集合===========&quo ...
- Linux操作系统奥秘01-系统引导(MBR - 硬盘的0磁道)
Boot:1.系统PowerOn 2.BIOS在完成硬件初始化以及POST 3.BIOS加载MBR 4.GRUB->GRUB or kernal MBR MBR即主引导记录,是在BIOS中选择的 ...
- CSS3常用选择器(一)
在 CSS 中,选择器是一种模式,用于选择需要添加样式的元素.比如最常用到的#id,.class,标签选择器. 随着CSS3到来,增加了很多新型选择器,这里就常用的做一个总结. 1.属性选择器. 在c ...
- H5测试区别与PC端测试关注点
除了基本的业务逻辑功能测试之后,H5页面的测试,需要关注以下几点: 1. 通过H5网页(非手机的返回功能)的返回功能可以返回,不会出现无法返回的情况. 2. 横屏竖屏相互切换,能自适应,并且布局不 ...
- Operate blob data in Oracle via C#
oracle table: CREATE TABLE "SCOTT"."TEST_BLOB" ( "NAME" VARCHAR2 ...