我是Git的新手并且无法理解如何使用Git。我一直在使用CVS,因此需要为Git学习一些学习曲线。以下是我尝试过的所有内容
现在我只更改了两个文件PromoServiceImpl.java和build.sql。但是合并有问题从“产品”分支改变了。
您看到的剩余文件(如ApiServiceImpl.java等)是来自其他用户的更改,但我不确定此处的表示是否表明我已更改它们。问题是它在早期的pull命令中合并了,现在它希望我提交它们吗?
无论我遵循什么命令流(即使在Google搜索之后),我都会看到以下错误:
您尚未完成合并(MERGE_HEAD存在) 请在合并之前提交您的更改。
这是我遵循和输出的命令序列(试图通过插入新行供每个人阅读来使其漂亮)。即使在重新从存储库中进行更改之后,这个错误也会回来,所以我确信我做错了,而不是git的一些问题。
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# 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: TryGitServices/src/main/java/com/TryGit/services/promo/impl/PromoServiceImpl.java
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
no changes added to commit (use "git add" and/or "git commit -a")
kamal@kamal-Lenovo-G470:~/git/TryGit$ git pull origin product
From ssh://192.168.2.251/TryGit
* branch product -> FETCH_HEAD
Auto-merging TryGitResources/build/build.sql
CONFLICT (content): Merge conflict in TryGitResources/build/build.sql
Automatic merge failed; fix conflicts and then commit the result.
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# Changes to be committed:
#
# modified: TryGitCore/src/main/java/com/TryGit/core/api/binding.xml
# modified: TryGitServices/src/main/java/com/TryGit/services/api/impl/ApiServiceImpl.java
# modified: TryGitServices/src/main/java/com/TryGit/services/common/impl/StartupServiceImpl.java
# modified: TryGitWeb/src/main/webapp/WEB-INF/wsdl/TryGit.wsdl
# modified: TryGitWeb/src/main/webapp/static/css/TryGit/homeDeal.css
# modified: TryGitWeb/src/main/webapp/static/css/TryGit/TryGit.css
# modified: TryGitWeb/src/main/webapp/static/img/TryGit/sprite/TryGit.png
# modified: TryGitWeb/src/main/webapp/views/admin/createPromoCode.jsp
# modified: TryGitWeb/src/main/webapp/views/admin/product/productAdmin.jsp
# modified: TryGitWeb/src/main/webapp/views/deal/homePage.jsp
#
# Unmerged paths:
# (use "git add/rm <file>..." as appropriate to mark resolution)
#
# both modified: TryGitResources/build/build.sql
#
# 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: TryGitServices/src/main/java/com/TryGit/services/promo/impl/PromoServiceImpl.java
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
kamal@kamal-Lenovo-G470:~/git/TryGit$ git reset TryGitResources/build/build.sql
Unstaged changes after reset:
M TryGitResources/build/build.sql
M TryGitServices/src/main/java/com/TryGit/services/promo/impl/PromoServiceImpl.java
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# Changes to be committed:
#
# modified: TryGitCore/src/main/java/com/TryGit/core/api/binding.xml
# modified: TryGitResources/build/build.sql
# modified: TryGitServices/src/main/java/com/TryGit/services/api/impl/ApiServiceImpl.java
# modified: TryGitServices/src/main/java/com/TryGit/services/common/impl/StartupServiceImpl.java
# modified: TryGitWeb/src/main/webapp/WEB-INF/wsdl/TryGit.wsdl
# modified: TryGitWeb/src/main/webapp/static/css/TryGit/homeDeal.css
# modified: TryGitWeb/src/main/webapp/static/css/TryGit/TryGit.css
# modified: TryGitWeb/src/main/webapp/static/img/TryGit/sprite/TryGit.png
# modified: TryGitWeb/src/main/webapp/views/admin/createPromoCode.jsp
# modified: TryGitWeb/src/main/webapp/views/admin/product/productAdmin.jsp
# modified: TryGitWeb/src/main/webapp/views/deal/homePage.jsp
#
# 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: TryGitResources/build/build.sql
# modified: TryGitServices/src/main/java/com/TryGit/services/promo/impl/PromoServiceImpl.java
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
kamal@kamal-Lenovo-G470:~/git/TryGit$ git stash
Saved working directory and index state WIP on product: b8bb080 changing build.sql for RBT task
HEAD is now at b8bb080 changing build.sql for RBT task
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
nothing added to commit but untracked files present (use "git add" to track)
kamal@kamal-Lenovo-G470:~/git/TryGit$ git reset Adding
kamal@kamal-Lenovo-G470:~/git/TryGit$ git reset Adding
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
nothing added to commit but untracked files present (use "git add" to track)
kamal@kamal-Lenovo-G470:~/git/TryGit$ git rm Adding
fatal: pathspec 'Adding' did not match any files
kamal@kamal-Lenovo-G470:~/git/TryGit$ man git rm
kamal@kamal-Lenovo-G470:~/git/TryGit$ git rm Adding
fatal: pathspec 'Adding' did not match any files
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
nothing added to commit but untracked files present (use "git add" to track)
kamal@kamal-Lenovo-G470:~/git/TryGit$ git pull origin product
remote: Counting objects: 566, done.
remote: Compressing objects: 100% (316/316), done.
remote: Total 386 (delta 207), reused 0 (delta 0)
Receiving objects: 100% (386/386), 203.81 KiB, done.
Resolving deltas: 100% (207/207), completed with 56 local objects.
From ssh://192.168.2.251/TryGit
* branch product -> FETCH_HEAD
Auto-merging TryGitResources/build/build.sql
CONFLICT (content): Merge conflict in TryGitResources/build/build.sql
Automatic merge failed; fix conflicts and then commit the result.
kamal@kamal-Lenovo-G470:~/git/TryGit$ git pull origin product
M TryGitCore/src/main/java/com/TryGit/core/api/binding.xml
U TryGitResources/build/build.sql
M TryGitServices/src/main/java/com/TryGit/services/api/impl/ApiServiceImpl.java
M TryGitServices/src/main/java/com/TryGit/services/common/impl/StartupServiceImpl.java
M TryGitWeb/src/main/webapp/WEB-INF/wsdl/TryGit.wsdl
M TryGitWeb/src/main/webapp/static/css/TryGit/homeDeal.css
M TryGitWeb/src/main/webapp/static/css/TryGit/TryGit.css
M TryGitWeb/src/main/webapp/static/img/TryGit/sprite/TryGit.png
M TryGitWeb/src/main/webapp/views/admin/createPromoCode.jsp
M TryGitWeb/src/main/webapp/views/admin/product/productAdmin.jsp
M TryGitWeb/src/main/webapp/views/deal/homePage.jsp
Pull is not possible because you have unmerged files.
Please, fix them up in the work tree, and then use 'git add/rm <file>'
as appropriate to mark resolution, or use 'git commit -a'.
kamal@kamal-Lenovo-G470:~/git/TryGit$ git add TryGitResources/build/build.sql
kamal@kamal-Lenovo-G470:~/git/TryGit$ git pull origin product
You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.
kamal@kamal-Lenovo-G470:~/git/TryGit$ gs
# On branch product
# Your branch is ahead of 'origin/product' by 1 commit.
#
# Changes to be committed:
#
# modified: TryGitCore/src/main/java/com/TryGit/core/api/binding.xml
# modified: TryGitResources/build/build.sql
# modified: TryGitServices/src/main/java/com/TryGit/services/api/impl/ApiServiceImpl.java
# modified: TryGitServices/src/main/java/com/TryGit/services/common/impl/StartupServiceImpl.java
# modified: TryGitWeb/src/main/webapp/WEB-INF/wsdl/TryGit.wsdl
# modified: TryGitWeb/src/main/webapp/static/css/TryGit/homeDeal.css
# modified: TryGitWeb/src/main/webapp/static/css/TryGit/TryGit.css
# modified: TryGitWeb/src/main/webapp/static/img/TryGit/sprite/TryGit.png
# modified: TryGitWeb/src/main/webapp/views/admin/createPromoCode.jsp
# modified: TryGitWeb/src/main/webapp/views/admin/product/productAdmin.jsp
# modified: TryGitWeb/src/main/webapp/views/deal/homePage.jsp
#
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
kamal@kamal-Lenovo-G470:~/git/TryGit$ git pull origin product
You have not concluded your merge (MERGE_HEAD exists).
Please, commit your changes before you can merge.
kamal@kamal-Lenovo-G470:~/git/TryGit$
答案 0 :(得分:20)
这里有几件事情要发生。它有助于了解发出各种Git命令时会发生什么。
pull
命令(如git pull
)results in a fetch
后跟merge
。所以当你做了pull
kamal@kamal-Lenovo-G470:~/git/TryGit$ git pull origin product
Git尝试从默认远程存储库中提取更改
From ssh://192.168.2.251/TryGit
* branch product -> FETCH_HEAD
并合并它们。
Auto-merging TryGitResources/build/build.sql
这样做会遇到冲突
CONFLICT (content): Merge conflict in TryGitResources/build/build.sql
Automatic merge failed; fix conflicts and then commit the result.
该文件的Git maintains this 3 versions等待合并 - 您的更改,所引入的更改以及共同的祖先。引入的版本暂时存储在MERGE_HEAD中。
您可以通过git diff
调用查看差异。此时,您需要修复Git无法自动解决的冲突。修复后,只需执行常规git add
后跟git commit
即可。此过程也在commit
命令的手册页的示例部分中进行了解释。
哦!您似乎有一个名为Adding
的文件。请注意,git status
命令以
# Untracked files:
# (use "git add <file>..." to include in what will be committed)
#
# Adding
当您要求Git跟踪目录时(例如您git init .
时),就会发生这种情况。从那时起,Git监控指定位置的变化。上面说的是“我看到你添加了一个名为Adding的文件。我对它的了解不多(它没有跟踪)。”一旦你添加它,Git就会开始跟踪变化(可以告诉你 随着时间的推移已经改变了什么)。